22.06.2021, 08:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2021, 18:28 von WillWissen.
Bearbeitungsgrund: Schriftgröße
)
Hallo,
ich habe eine Arbeitsmappe mit den Arbeitsblättern Overview, Table_D und Table_P
Es sollen nun zellenweise die Nummern aus Overview geprüft werden, ob diese in "Table_D" oder "Table_P" auftauchen. Findet man die Kategorie "D" mit einer Nummer nicht in "Table_D", soll für diese Zeile in Spalte L "geschlossen" geschrieben werden, das gleiche für P: Findet man die Kategorie "P" mit der Nummer nicht in "Table_P" soll für diese Zeile in Spalte L "geschlossen" geschrieben werden. Wird eine Nummer aus Overview in Table_D oder Table_P gefunden, soll Spalte L leer bleiben.
bin mir nicht sicher, ob ich es richtig verstanden habe. Probier es mal so: =WENN(ISTZAHL(VERGLEICH(B2;WAHL(WENN(A2="P";1;2);Table_P!$A$3:$A$44;Table_D!$A$3:$A$31);0));"geschlossen";"")
22.06.2021, 11:06 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2021, 11:06 von Hallo94.)
Hallo ihr beiden,
danke für die schnelle Antwort, die haben in der Beispielmappe beide funktioniert. Ich habe jetzt in der Originalmappe das Problem, dass die Nummern in Overview, Table_D und Table_P keine Zahlen sind, sondern Text (bzw. Text und Zahl). Kann man diese Wenn-Abfragen auch datentyp-unabhängig schreiben?
Eine weitere Frage ist, ob man diesen Check auch in ein bereits bestehendes Makro integrieren kann (und ob das nicht sinnvoller wäre?)
Das bisherige Makro sieht so aus (es prüft ob in für Table_D und Table_P jeweils, ob die Nummern in Overview verfügbar sind und kopiert dann die Nummern und die dazugehörigen Daten rüber in Overview):
Code:
Option Explicit
Sub Daten_in_Overview() Dim alleD As Variant, alleP As Variant, alleOverview As Variant Dim leereZeile As Long, n As Long, x As Long Dim vorhanden As Boolean
With Worksheets("Table_D") alleD = .Range("A3:J" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value End With
With Worksheets("Table_P") alleP = .Range("A3:J" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value End With
For n = 1 To UBound(alleD, 1) - 1 For x = 1 To UBound(alleOverview) If alleD(n, 1) = alleOverview(x, 1) Then vorhanden = True Exit For End If Next x
If vorhanden = False Then .Range("A" & leereZeile).Value = "D" .Range("L" & leereZeile).Value = "neu"
For x = 1 To UBound(alleD, 2) .Cells(leereZeile, x + 1) = alleD(n, x) Next x
' oder einzeln ohne Schleife '.Range("B" & leereZeile).Value = alleD(n, 1) '.Range("C" & leereZeile).Value = alleD(n, 2) ' usw.
alleOverview = .Range("B2:B" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value leereZeile = leereZeile + 1 End If
vorhanden = False Next n
For n = 1 To UBound(alleP, 1) - 1 ' -1: vor der letzte Zeile mit Expüortnachrichten aufhören For x = 1 To UBound(alleOverview) If alleP(n, 1) = alleOverview(x, 1) Then 'Nummer schon vorhanden vorhanden = True Exit For End If Next x
If vorhanden = False Then .Range("A" & leereZeile).Value = "P" .Range("L" & leereZeile).Value = "neu"
For x = 1 To UBound(alleD, 2) .Cells(leereZeile, x + 1) = alleP(n, x) Next x
alleOverview = .Range("B2:B" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value leereZeile = leereZeile + 1 End If
Ich meinte prinzipiell haben sie beide funktioniert. Ich musste nur bei einer Formel "geschlossen" und "" tauschen, dann hat das hingehauen.
Könntest du mir dabei behilflich sein, diese Prüfung auch ins Makro zu integrieren? Das Problem ist, wenn ich dieses Makro ausführe, dass dann ja quasi die Nummern aus Table_D und Table_P schon in Overview sind mit dem Status "neu"
(22.06.2021, 11:06)Hallo94 schrieb: Ich habe jetzt in der Originalmappe das Problem, dass die Nummern in Overview, Table_D und Table_P keine Zahlen sind, sondern Text (bzw. Text und Zahl). Kann man diese Wenn-Abfragen auch datentyp-unabhängig schreiben?
Meine Formel funktioniert immer dann, wenn das Format des Suchwerts in Overview mit dem Format in den anderen beiden Tabellen übereinstimmt. Ist allerdings in Overview die Nummer als Zahl formatiert und in den anderen nicht, dann klappt es nicht.
Also entweder die Spalte in der Tabelle Overview als Text formatieren oder Du wandelst den Wert vorher in Text um:
Danke dir für die zusätzliche Erklärung! Ich probiere gerade die Prüfung von Overview nach Table_D und Table_P im bereits geposteten Makro zu integrieren.
Wenn du dazu Lösungsvorschläge hast, wäre ich dir dankbar, wenn du sie posten könntest.