By wenkatraj am Dienstag 10 Juli 2018
Veröffentlicht in Excel
Antworten 0
Likes 0
Views 1.8k
Bewertungen 0
Ich habe ein Makro, das basierend auf den Kopfzeilen das gesamte Blatt 2 nach Blatt 1 kopiert.

Zum Beispiel,

Blatt 2 hat mehrere Spalten und Blatt 1 hat nur 5 oder 6 Spalten mit den Überschriften von Blatt2. Mit dem folgenden Skript zieht Blatt 1 die komplette Zeile; basierend auf den Überschriften von Blatt 2 (Beispiel: 10). Jetzt muss ich das Skript ein wenig modifizieren, sodass es nur hervorgehobene (in Rot) Zeilen aus Blatt 2 basierend auf den Überschriften zieht (Beispiel: 2 Zeilen). Bitte helfen Sie.

Untermakro1 ()
Dim Rng As Range, c As Range
Dimmen Sie die Zelle als Bereich
Dimmen Sie rSize so lang
Ziel als Bereich dimmen
HeaderRng als Bereich dimmen
Dimmen Sie lDestRow so lange
Dim i Als Ganzzahl
Application.ScreenUpdating = False 'Nach dem Testen auskommentieren

Blätter("Basisblatt").Auswählen
i = 0
Setze Rng = Range([D1], [D1].End(xlToRight))


Für jedes c in Rng


Setze sCell = Sheets("Roster").Range("1:1").Find(what:=c.Value, LookIn:=xlValues, lookat:=xlWhole)
rSize = Sheets("Roster").Range(sCell.Offset(1, 0), sCell.End(xlDown)).SpecialCells(xlCellTypeVisible).Cells.Count

Wenn c.Offset(1, 0).Value <> "" Dann
'c.End(xlDown).Offset(1, 0).Resize(rSize, 1) = Sheets("Roster").Range(sCell.Offset(1, 0), sCell.End(xlDown)).SpecialCells( xlCellTypeVisible).Value
Setze dest = c.End(xlDown).Offset(1, 0)
Wenn ich = 0 dann
lDestRow = dest.Row
End If

Wenn dest.Row < lDestRow Dann
Setze dest = Cells(lDestRow, dest.Column)
End If

Sheets("Roster").Range(sCell.Offset(1, 0), sCell.End(xlDown)).SpecialCells(xlCellTypeVisible).Copy
Ziel auswählen
ActiveSheet.Paste


sonst
'c.Offset(1, 0).Resize(rSize, 1).Value = Range(sCell.Offset(1, 0), sCell.End(xlDown)).SpecialCells(xlCellTypeVisible).Value

Range(sCell.Offset(1, 0), sCell.End(xlDown)).SpecialCells(xlCellTypeVisible).Copy
Setze dest = c.Offset(1, 0)

Wenn dest.Row < lDestRow Dann
Setze dest = Cells(lDestRow, dest.Column)
End If

Ziel auswählen
ActiveSheet.Paste
End If

i = i + 1
Weiter
Application.ScreenUpdating = True

End Sub
Vollständigen Beitrag anzeigen