Wie kann ich in Excel eine Datenzeile in einer Tabelle, die in einer Zelle bestimmten Text enthält, automatisch in einer Tabelle auf einem separaten Blatt anzeigen lassen?

Wie kann ich in Excel eine Datenzeile in einer Tabelle, die in einer Zelle bestimmten Text enthält, automatisch in einer Tabelle auf einem separaten Blatt anzeigen lassen?

Ich lade jede Woche einen Bericht mit 8 Datenspalten in eine Tabelle herunter. Die Datenmenge ändert sich jede Woche zeilenweise (eine Woche kann 40 Zeilen haben, die nächste 100, aber nicht mehr als 150). Die Datenüberschriften bleiben gleich.

Ich muss in der Lage sein, alle Daten in einer Zeile, in der „HOT: Must Cover“ in Spalte B erscheint, automatisch in einer identischen Tabelle auf einem anderen Blatt anzuzeigen/anzualysieren. Würde ich irgendwie eine SVERWEIS-Funktion zusammen mit =WENN verwenden?

Beispieltabelle in Blatt 1:

Bildbeschreibung hier eingeben

Antwort1

Sie haben beispielsweise die Möglichkeit, die Filteroption in Excel zu verwenden und sie dann alphabetisch in Spalte B zu sortieren. Wenn Sie sie wirklich auf einem separaten Blatt benötigen, können Sie sie kopieren und in das nächste Blatt einfügen (da sie durch die Sortierung alle zusammengefasst werden).

Alternativ müssten Sie ein Makro schreiben, das Spalte B in jeder Zeile liest und die Zeile kopiert, wenn der Inhalt „Hot: Must Cover“ ist.

Etwas in dieser Art:

Dim i as Integer
Dim j as Integer

i = 0
j = 0

Do While Cells(i, 2).value != ""
    if Cells(i, 2).Value == "Hot: Must Cover" Then
        Worksheets("Sheet1").Range(Cells(j, 0), Cells(j, 7).Value = Worksheets("Sheet1").Range(Cells(i, 0), Cells(i, 7).Value
        j = j + 1
    End if
    i=i+1
loop

Antwort2

VLOOKUPIch denke, dass dies mit (oder einer anderen Suchfunktion) schwierig zu bewerkstelligen wäre . Betrachten Sie diese VBA-Lösung:

Sub test    
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim j As Integer

    Set ws1 = Worksheets(1)
    Set ws2 = Worksheets(2)
    j = 1

    For i = 2 To (ws1.Range("A1").ListObject.DataBodyRange.Count + 1)
        If ws1.Range("B" & i).Value = "HOT: Must Cover" Then
            ws1.Range("A" & i & ", G" & i).Copy
            ws2.Range("A" & j).PasteSpecial xlPasteValues
            j = j + 1
        End If
    Next i
End Sub

verwandte Informationen