Teilen der Arbeitsmappe mithilfe eines Filters und Erstellen einer neuen Datei im Spaltennamen

671
Suyash

Angenommen, ich habe eine Arbeitsmappe (Report.xlsx) und in dieser Arbeitsmappe habe ich ein anderes Arbeitsblatt. In jedem Blatt habe ich einen Spaltennamen B_Code. Mit Filter in B_Code möchte ich eine separate Arbeitsmappe mit jedem Blatt darin haben.

Wie in Abbildung 1 können Sie sehen, dass Blatt 1 B_Code enthält.

Ähnlich habe ich in Blatt 2 auch B_Code.

Jetzt möchte ich die Daten von 001 dh Ram in Blatt 1 sowie in Blatt 2 in derselben Arbeitsmappe wie Dateiname 001 und 002 dh Hari in Blatt 1 sowie in Blatt 2 in einer anderen Arbeitsmappe als Dateiname 002 usw. anzeigen.

Kann mir jemand helfen, dieses Problem mit VBA zu lösen.

0

1 Antwort auf die Frage

0
scenography

Speichern Sie eine Kopie der Datei, bevor Sie mit dem Löschen beginnen. Dann können Sie VBA-Code verwenden, der eine Zeile löscht, wenn cell ( rngCell) einen anderen Wert als 001 oder B_Code oder ein Leerzeichen hat.

 If rngCell.Value <> "001" _ And rngCell.Value <> "B_Code" _ And rngCell.Value <> "" _ Then rngCell.EntireRow.Delete End If 

Fügen Sie diesen Code in eine ForSchleife ein, um alle Zellen in Spalte A zu überprüfen. Da Sie Zeilen löschen, starten Sie die Schleife in der letzten Zeile und bewegen Sie sich nach oben Step -1. Der Code, der die letzte Zeile ( lngLastRowNumber) findet, wird unter Suchen der zuletzt verwendeten Zelle in einem Bereich beschrieben .

 lngLastRowNumber = Cells(Rows.Count, "A").End(xlUp).row For lngRowNumber = lngLastRowNumber To 1 Step -1 Set rngCell = Columns("A").Rows(lngRowNumber) If rngCell.Value <> "001" _ And rngCell.Value <> "B_Code" _ And rngCell.Value <> "" _ Then rngCell.EntireRow.Delete End If Next lngRowNumber 

Um Zeilen in jedem Arbeitsblatt zu löschen, fügen Sie die Schleife in eine andere Schleife ein, die For EachArbeitsblatt ist.

Schreibe über alle Probleme, die du hast, während du den Code schreibst und testest.