Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zellen prüfen und Status eintragen
#1
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.

Ich hoffe ihr könnt mir da behilflich sein


Angehängte Dateien
.xlsx   Beispiel - Kopie.xlsx (Größe: 18,92 KB / Downloads: 10)
Antworten Top
#2
Hola,

Code:
=WENN(ZÄHLENWENN(INDIREKT("Table_"&A2&"!A:A");B2)=0;"geschlossen";"")
Gruß,
steve1da
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • Hallo94
Antworten Top
#3
Hallo,

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";"")
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • Hallo94
Antworten Top
#4
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


With Worksheets("Overview")
   
    leereZeile = .Cells(Rows.Count, "A").End(xlUp).Row + 1
   
    alleOverview = .Range("B2:B" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value

    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
       
        vorhanden = False
    Next n

End With

End Sub
Antworten Top
#5
Zitat:danke für die schnelle Antwort, die haben in der Beispielmappe beide funktioniert.
Super. Das die Formeln völlig unterschiedliche Ergebnisse bringen ist also egal?

Bei meiner Formel ist es übrigens egal ob die Zahl in Spalte A von Table_D und Table_P eine ZAHL oder TEXT ist.
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • Hallo94
Antworten Top
#6
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"
Antworten Top
#7
Zitat:Ich meinte prinzipiell haben sie beide funktioniert. Ich musste nur bei einer Formel "geschlossen" und "" tauschen, dann hat das hingehauen.

Und bei welcher?



Zitat:Könntest du mir dabei behilflich sein, diese Prüfung auch ins Makro zu integrieren?
Kann ich leider nicht.
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • Hallo94
Antworten Top
#8
(22.06.2021, 10:31)steve1da schrieb: Und bei welcher?



Kann ich leider nicht.

Deine war richtig, bei Steuerfuzzis Lösung musste ich lediglich geschlossen und "" tauschen. War also prinzipiell beides richtig.

Schade! Danke dir trotzdem vielmals.
Antworten Top
#9
(22.06.2021, 10: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:

=WENN(ISTZAHL(VERGLEICH(TEXT(B2;"@");WAHL(WENN(A2="P";1;2);Table_P!$A$3:$A$44;Table_D!$A$3:$A$31);0));"";"geschlossen")
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • Hallo94
Antworten Top
#10
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.

VG!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste