Excel 均匀分布A列到B列的单元格值

Excel 均匀分布A列到B列的单元格值,excel,vba,Excel,Vba,我对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) 希望这个问题很清楚可以使用转置功能吗 Sub CopyData(

我对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)


希望这个问题很清楚

可以使用
转置
功能吗

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
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.040464696631069秒内完成所有列的操作。:)

试着录制一个宏,看看你得到了什么代码。试着写两个嵌套循环。一个将循环A1到A100,内部将切换B、C、D并写入值