Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: PUK am Juli 24, 2015, 14:21:26 Nachmittag

Titel: Welche Formel?
Beitrag von: PUK 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!
Titel: Antw: Welche Formel?
Beitrag von: Frank Furter am Juli 24, 2015, 14:26:56 Nachmittag
hallo, kannst du mal bitte (d)eine (beispiel)datei posten. bitte mit händisch eingetragenen ergebnissen...
Titel: Antw: Welche Formel?
Beitrag von: gmg-cc 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 (http://www.excel-ist-sexy.de/eigene-funktionen-udfs-einfuegen/) nachlesen.