Collapse column

Autor Thema: Welche Formel?  (Gelesen 1633 mal)

Offline PUK

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2007
Welche Formel?
« am: Juli 24, 2015, 14:21:26 Nachmittag »
Ihr Lieben,
wir haben eine (für uns sehr komplizierte) Formel zu programmieren in Excel 2007. Könnt ihr uns helfen?

Und zwar haben wir neun Spalten, die für jeden Fall (also in jeder Zeile) jeweils Werte zwischen 0 und 3 (und 99 für "nicht beantwortet") annehmen können. Nun wollen wir in der neuen Spalte 10 folgendes programmieren:

In mindestens 5 der 9 Spalten steht der Wert 2 oder 3, wobei Spalte 9 auch den Wert 1 annehmen kann. Zudem MUSS die erste oder die zweite Spalte den Wert 2 oder 3 angenommen haben. Wenn dieser Fall eintritt (also alle Bedingungen erfüllt sind), dann sollte in unserer neuen Spalte 10 "vorhanden" stehen; wenn der Fall nicht eintritt, sollte in der neuen Spalte 10 der Wert "nicht vorhanden" stehen.

Außerdem gibt es einen (vermutlich leichteren) Fall, den wir in Spalte 11 programmieren wollen:
Spalte 11 soll den Wert "vorhanden" annehmen, wenn mindestens 2 Spalten (wie oben Spalten 1 bis 9) mindestens den Wert 2 angenommen haben, sonst soll in der neuen Spalte 11 der Wert "nicht vorhanden" stehen.

Wir haben leider keine Ahnung, wie die Formel dafür lauten müsste  :-[ Hat jemand von euch eine Idee? Vielen lieben Dank!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline Frank Furter

  • Full Member
  • ***
  • Beiträge: 117
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Ohne
  • Version [Office] : Office 2010
Antw: Welche Formel?
« Antwort #1 am: Juli 24, 2015, 14:26:56 Nachmittag »
hallo, kannst du mal bitte (d)eine (beispiel)datei posten. bitte mit händisch eingetragenen ergebnissen...
gruß vom Frank Furter mit hiob's botschaften

XL2000 bis 2016

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Welche Formel?
« Antwort #2 am: Juli 24, 2015, 19:03:42 Nachmittag »
Moin,

Zitat
Wir haben leider keine Ahnung, wie die Formel dafür lauten müsste  :-[

Ich auch nicht, denn ich finde Formeln mit mehr als 50 Zeichen einfach total intransparent und nicht wirklich "pflegeleicht".  ??? Aber ich bin überzeugt, dass es auch mit plain Excel geht ...
Zitat
Hat jemand von euch eine Idee?

Ja, ich mache das per UDF. In Spalte_J (10) dann nur noch eingeben =CheckIt5() und n Spalte_K =CheckIt2() dann kommt das Ergebnis. Dann so weit wie erforderlich runter ziehen. Hier die beiden Funktionen:
Option Explicit

Function CheckIt5() As String
   Dim Ze As Long, Anz As Integer
   Dim rngZe As Range, c As Range
   
   Application.Volatile
   CheckIt5 = "nicht vorhanden"
   Ze = Range(Application.Caller.Address).Row
   Set rngZe = Range(Cells(Ze, 1), Cells(Ze, 9))
   If Cells(Ze, 1) <> 1 And Cells(Ze, 1) <> 2 Then Exit Function
   If Cells(Ze, 2) <> 1 And Cells(Ze, 2) <> 2 Then Exit Function
   For Each c In rngZe
      If c = 2 Or c = 3 Then Anz = Anz + 1
   Next c
   If Cells(Ze, 9) = 1 Then Anz = Anz + 1
   If Anz > 4 Then CheckIt5 = "vorhanden"
End Function

Function CheckIt2() As String
   Dim Ze As Long, Anz As Integer
   Dim rngZe As Range, c As Range
   
   Application.Volatile
   CheckIt2 = "nicht vorhanden"
   Ze = Range(Application.Caller.Address).Row
   Set rngZe = Range(Cells(Ze, 1), Cells(Ze, 9))
   For Each c In rngZe
      If c = 2 Then Anz = Anz + 1
   Next c
   If Anz > 1 Then CheckIt2 = "vorhanden"
End Function

Wie du UDFs einbindest, kannst du hier bei Excel-ist-sexy nachlesen.
Gruß
Günther

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.