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
-
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!
-
hallo, kannst du mal bitte (d)eine (beispiel)datei posten. bitte mit händisch eingetragenen ergebnissen...
-
Moin,
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 ...
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.