我是Excel VBA的新手,所以请对我好:)
我的问题是我想将A列的值复制到最后一个有值的单元格并分别粘贴到B C D
实施例
A列有3行,分别为Tim,john,Mer值
我想分别将它粘贴到列B2 C2 D2
问题:A列有一个动态行数,所以我希望它复制到最后一个notempty单元格。但是当A列超过3(要粘贴的列数)时,它将循环并粘贴到B3然后C3然后粘贴到D3,依此类推,直到所有非空单元均匀分布到3列(B,C和D)
希望这个问题很清楚
答案 0 :(得分:0)
Sub CopyData()
Dim x As Long, i As Long
Application.ScreenUpdating = False
For i = 1 To 100 Step 3
x = x + 1
Range("A" & i & ":A" & i + 2).Copy
Range("B" & x).PasteSpecial xlPasteValues, , , True
Next i
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
也许可以使用TRANSPOSE
函数?
Sub TransposeToColumns()
Dim lLastRow As Long
With ThisWorkbook.Worksheets("Sheet1")
'Get the last row (same as going to end of sheet and pressing Ctrl+Up).
lLastRow = .Range("A" & Rows.Count).End(xlUp).Row
If lLastRow > 3 Then
'Cells(1,2) is row 1, column 2.
With .Range(.Cells(1, 2), .Cells(1, lLastRow + 1))
'R1C1 style of referencing - absolute reference to A1 is R1C1 (row 1 column 1).
.FormulaArray = "=TRANSPOSE(R1C1:R" & lLastRow & "C1)"
'Replace formula with values.
.Value = .Value
End With
End If
End With
End Sub
刚刚意识到 - 如果您尝试使用超过16383行(即列数-1),这将会出错。但它会在0.040469668631069秒内完成所有列。 :)