Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

IF Bedingungen aus Tabelle auslesen

IF Bedingungen aus Tabelle auslesen
09.01.2023 02:58:04
Fred
Hallo liebe Community,
Ich brauche dringend Hilfe, ich komme nicht weiter.
Ich habe eine Excel Tabelle, in der logische Operatoren stehen und ich würde diese gerne für meinen Code verwenden.
Also in Zelle A1 steht beispielsweise: „Test(1) = 1 OR Test(1) = 2“
Und in Zelle A2 steht „Test(2) =2 AND Test(1) 2“.
Nun habe ich ein Array „Test“ , welches mit genau diesen Werten gefüllt ist.
Wenn ich nun folgendes schreibe, erhalte ich immer die Antwort „Falsch“. Es gibt keinen Kompilierfehler. Ich möchte quasi meine Bedingungen für die If Anweisung direkt aus einer Zelle übertragen. Könntet ihr mir bitte weiterhelfen? Ich habe schon alles versucht und lange gegoogelt ohne Erfolg. :(

Dim Zelle as Variant
Dim Test(2) as Variant
Dim i as Integer
Test(1)=1
Test(2)=2
For Each Zelle in Worksheets(„Tabelle1“).Range(„A:A“)
If Zelle.Value = True
Debug.print „Richtig“
Else
Debug.print „Falsch“
End If
Next Zelle



		

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 08:19:52
ChrisL
Hi
Also die Anführungszeichen passen nicht.
Worksheets(„Tabelle1“).Range(„A:A“)
Worksheets("Tabelle1").Range("A:A")
und ein "Then" fehlt.
Aber generell kannst du keine Texte (Zelleninhalt) als VBA-Code verwenden.
Hier die Logik umgedreht, was aber ebenfalls ein ungewöhnliches Vorgehen wäre.

=ODER(holewerte(1)=1;holewerte(2)=2)

Function HoleWerte(i As Integer) As Variant
Dim Test(2) As Variant
Test(1) = 1
Test(2) = 2
HoleWerte = Test(i)
End Function
cu
Chris
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 09:08:53
Fred
Hey Chris,
Erstmal vielen Dank für deine Antwort.
Also wie gesagt, die Syntax ist korrekt, ich habe es nur auf die Schnelle geschrieben, sowohl die richtigen Anführungsstriche als auch das Then sind da.
Was macht deine Funktion nun genau? Und hast du oder jemand anderes sonst eine Idee, wie ich mein Problem anders lösen kann?
Vielen Dank im Voraus!
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 09:31:05
ChrisL
Hi Fred
Wie erwähnt, du kannst keine Codes (in Reintext) aus Formeln/Zellen nach VBA holen (Texte holen natürlich schon, aber nicht als Code verwenden). Aber du kannst Werte aus VBA in Zellen/Formeln holen, wozu das Beispiel dient.
Kannst du mal ausführlicher beschreiben, was du genau machen willst (am besten mittels Beispieldatei). Vielleicht kann man dir danach geeignete Alternativen vorschlagen. So wie du die Frage formulierst (mindestens so wie ich es verstehe), kann man nur antworten: "geht nicht".
cu
Chris
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 10:18:31
onur
"Ich möchte quasi meine Bedingungen für die If Anweisung direkt aus einer Zelle übertragen"- schön und gut aber woher soll hier
Test(1) = 1 OR Test(1) = 2
die Zelle wissen, was Test(1) sein soll?
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 10:34:56
Fred
Hallo onur,
Vielen Dank für deine Antwort.
Wie meinst du das jedoch genau? Die Zelle muss ja nicht wissen, was Test(1) ist, da dies nur im Code gebraucht wird. Im Code ist ein entsprechend benanntes Array.
Vielen Dank für deine Zeit.
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 10:37:56
onur
Wenn wirklich, wie du schreibst:" Also in Zelle A1 steht beispielsweise: „Test(1) = 1 OR Test(1) = 2“", dann sollte die Zelle schon wissen, was Test(1) ist.....
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 10:28:25
Fred
Hey Chris,
also es geht um das Zusammensetzen einer Stückliste aus Bauteilen. Es handelt sich um PCs.
Ich habe eine vollumfängliche Liste, mit allen konfigurierbaren Bauteilen. Die Konfiguration des PCs sieht so aus, dass man eine 10-stellige Nummer (aus Zahlen und Buchstaben, bspw. "1D34567ABC") eingibt und je nachdem welche Zahl/Buchstabe an welcher Stelle steht wird ein Bauteil ausgewählt und soll in eine Stückliste eingetragen werden.
Die konfigurierbaren Bauteile haben in Spalte I die Informationen stehen, wann sie verbaut werden. Beispielsweise hätte 8GB RAM in Spalte I stehen "9=A" und 16 GB Ram wären "9=B", wobei die erste Zahl für die Stelle der 10-stelligen Nummer steht und die hinter dem "=" wäre entsprechend was an der Stelle der Nummer steht. Also in diesem Beispiel würden 8GB Ram ausgewählt, wenn in der 10-stelligen Nummer an der 9. Stelle ein A steht und entsprechend 16GB Ram wenn an der 9. Stelle ein B steht (was jetzt hier der Fall wäre).
Meine Idee war nun, die 10-stellige Nummer mittels Schleife in ein Array "Nummer" umschreiben zu lassen, sodass Nummer(1)=1, Nummer(2)=D, Nummer(3) =3 usw. steht.
Anschließend habe ich die erste Zahl x in Spalte I ersetzt durch "Nummer(x)". Und hier kommen wir an den Punkt meiner Frage, wo ich nicht weiterkomme. Das Problem ist zudem, dass in Spalte I auch kombinierte logische Operatoren stehen können wie "10 = 2 AND 09 != 0 AND 08 != B AND 08 != 3 AND 08 != 1". Ich habe bereits hinbekommen, dass aus dem Beispiel dann steht: "Nummer(10) = 2 AND Nummer(09) != 0 AND Nummer(08) != B AND Nummer(08) != 3 AND Nummer(08) != 1" steht und es fehlt nur noch der Schritt, diese Zeile dann im Code zu verwenden.
Ich möchte nämlich mittels TRUE/FALSE kontrollieren, ob die Bedingung in Spalte I für eine eingegebene 10-stellige Nummer True oder False ist und bei True in eine neue Liste schreiben.
Ich hoffe mal das war verständlich, vielen Dank für deine/eure Zeit!
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 10:35:28
onur
Poste mal eine Beispielsdatei (am besten mit Wunschergebnis als Beispiel). Ellenlange Beschreibungen der Datei bringen nix. Im besten Fall - wenn man alles kapieren würde, was du da schreibst - müsste man alles nachbauen, nur um dir helfen zu dürfen.
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 11:40:46
ChrisL
Hi
Hier mal eine Idee. Alle Komponenten mit ODER-Logik (was die Mehrheit zu sein scheint), werden im Standard über Input-Parameter geprüft. Diese Parameter können in einer separaten Excel-Liste abgelegt und z.B. mit SVERWEIS bezogen werden. Das Prüfkriterium wird komma-getrennt abgelegt, also nur als normierten Text hinterlegt (nicht als Code).
Die Ausnahme mit AND-Logik habe ich hart codiert.

Sub t()
' Beispiele. Die Parameter können aus Zellen kommen.
MsgBox TestMe("Komponente A", "1234ABCDEF", "9,A,9,B,9,L,9,E")
MsgBox TestMe("Komponente B", "1234ABCDEF", "9,C,9,N")
MsgBox TestMe("Komponente G", "1234ABCDEF", "")
End Sub

Function TestMe(strKomponente As String, strNummer As String, strPruefung As String) As Boolean
Dim varNummer(1 To 10) As Variant, varPruefung() As String
Dim i As Integer
' Input-Nummern in Array splitten
For i = 1 To 10
varNummer(i) = Mid(strNummer, i, 1)
Next i
' Ausnahmen mit UND-Logik
If strPruefung = "" Then
Select Case strKomponente
Case "Komponente G"
If varNummer(1) = 1 And varNummer(10)  0 And varNummer(8)  3 And varNummer(8)  1 Then TestMe = True
End Select
Exit Function
End If
' Standardprüfungen mit ODER-Logik
varPruefung() = Split(strPruefung, ",")
For i = LBound(varPruefung) To UBound(varPruefung) Step 2
If varNummer(varPruefung(i)) = varPruefung(i + 1) Then
TestMe = True
Exit Function
End If
Next i
End Function
cu
Chris
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 11:43:48
onur
"es fehlt nur noch der Schritt, diese Zeile dann im Code zu verwenden."
Was soll Excel oder VBA mit dieser Zeile
"10 = 2 AND 09 != 0 AND 08 != B AND 08 != 3 AND 08 != 1"
anfangen?
Das hat WEDER etwas mit Excel noch mit VBA zu tun. Sowas wie "!=" gibt es in der Sprache C, aber nicht hier. Hier heisst es "". VBA müsste diese Operationen erst mal auseinandernehmen und ins Brauchbare übersetzen.
Ich glaube, dein Konzept ist total falsch und du hast dich da festgerannt.
Poste doch endlich mal ANHAND EINES KONKRETEN BEISPIELS, wie das ganze aussehen soll. Soll heissen: ein Zahlencode und was dieser Zahlencode konkret bedeutet und WO das alles aufgelistet ist, was diese Einzel-Komponenten sind.
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 11:50:22
Fred
Danke für deine Antwort. Dies kann man einfach mit der Replace Funktion ersetzen, hänge dich doch nicht an den Syntax Problemen auf. Mir geht es doch erstmal nur um die Funktion. Ich habe eine Excel Datei hochgeladen mit meinem VBA Code und „Ausgangstabelle“ und „Ziel“ Tabelle, konkreter geht es doch nicht oder was meinst du genau mit Zahlencode?
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 11:57:13
onur
Ich wollte nur ein konkretes Beispiel mit einem konkreten Rechner mit einem 10-Stelligen Zahlencode, statt zufällig irgendwo in deinem Thread aufzuschnappen, "wenn das und das ist, bedeutet das RGB-Ram mit 16 GB, das und das bedeutet 32 GB" usw. Wo in deiner "Beispiels-" Tabelle steht denn das? Soll das Excel intuitiv oder per Telepathie wissen oder was?
Anzeige
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 12:03:17
Fred
Ich verstehe dich immer noch nicht was du meinst, in meinem Beispiel ist doch ein 10-stelliger Code und „mein“ Rechner der halt nicht funktioniert. ChrisL aus diesem Forum hat’s doch auch verstanden, liegt wohl nicht an mir, dass du es nicht verstehen willst.
AW: IF Bedingungen aus Tabelle auslesen
09.01.2023 12:05:44
onur
"ChrisL aus diesem Forum hat’s doch auch verstanden" - dann nimm doch seine Lösung und gut ist.

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige