Soweit die Logik des Kopierens von Werten, ich denke, das ist etwas, was Sie erarbeiten müssen. Aber ich habe ein paar Hinweise, wie ich dorthin komme.
Sie NICHT Verwendung auswählen/Kopieren/Einfügen - Verwenden Sie eine direkte Zuordnung statt
Range("G5").Resize(3, 1).Value = Range("F5").Value
dies der einzige Wert in der Zelle stattfinden wird F5
und es verwenden, um die drei Zellen G5:G7
zuzuweisen.
auf einen bestimmten Wert in einer Tabelle auszuwählen, verwenden, um die Funktion .Cells()
For i=1 to 10
Range("B2").Cells(i,1).Value = Range("A2").Cells(i,1).Value
Next i
Um die Anzahl der Zeilen heruntergezählt oder Spalte über die Werte, die die folgenden Funktionen haben (in einem Modul angeordnet).
Public Function CountCols(ByVal r As Range) As Long
If IsEmpty(r) Then
CountCols = 0
ElseIf IsEmpty(r.Offset(0, 1)) Then
CountCols = 1
Else
CountCols = r.Worksheet.Range(r, r.End(xlToRight)).Columns.Count
End If
End Function
Public Function CountRows(ByVal r As Range) As Long
If IsEmpty(r) Then
CountRows = 0
ElseIf IsEmpty(r.Offset(1, 0)) Then
CountRows = 1
Else
CountRows = r.Worksheet.Range(r, r.End(xlDown)).Rows.Count
End If
End Function
Um als
Dim n as Long
' Count rows in table starting from A2
n = CountRows(Range("A2"))
Dim r as Range
' Set a range reference to n×1 cells under A2
Set r = Range("A2").Resize(n,1)
Um zu überprüfen, ob eine Zelle, IsEmpty()
leer verwenden, so wie ich in CountRows()
verwendet haben, verwendet werden.
Kann Sie Stück alle diese Stücke zusammen, um ein Makro zu machen, was Sie wollen? Sie sollten: a) prüfen, wie viele Zeilen sich in der Tabelle befinden, b) in den Zellen nach unten gehen und prüfen, ob sie im Ziel leer sind und c) falls ja, aus derselben Zeile in der Quelle kopieren.
Bitte posten Sie alle Code, die Sie bisher versucht haben; Diese Site ist für die Zusammenarbeit gedacht, nicht für den Code-for-you-Service. – Cyril
@Cyril siehe bitte bearbeiten. Ich denke, dass mein Code völlig falsch ist, deshalb habe ich ihn anfangs nicht gepostet. –
Ok, wenn du dir anschaust, was du im Code machst, hast du ein paar Stücke, die mit einer Schleife gelöst werden können ... Lass uns von der Unterseite deines Tisches ausgehen; Du wirst DYNAMISCH die letzte Reihe ("LR") bestimmen wollen. Rob de Bruin hat einen großartigen Überblick darüber, wie man das macht (google die Scheiße). Von dort können Sie eine for-Schleife und eine if-Anweisung verwenden, um den Inhalt von LR nach 1 Schritt -1 zu kopieren. Bitte nehmen Sie sich etwas Zeit und versuchen Sie, Code mit diesen Informationen zu erstellen, dann können wir Ihre spezifischen Probleme korrigieren. – Cyril