Excel 每两个细胞复制一次并转置

Excel 每两个细胞复制一次并转置,excel,vba,Excel,Vba,我正在尝试将每两个单元格进行转置,并将它们粘贴到右下一个单元格中 我有一张如屏幕截图所示的表格: 我想复制范围“B2:B3”并将其转置到“C2”,然后循环,直到B列中有一些数据。(因此,选择并复制下一个“B4:B5”,并将其转置到“B4”) 我不能让它在正确的位置转置然后循环 我有类似的东西(我还没有向这个宏添加循环): 不需要VBA。在C2中输入: =INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2) =INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0

我正在尝试将每两个单元格进行转置,并将它们粘贴到右下一个单元格中

我有一张如屏幕截图所示的表格:

我想复制范围
“B2:B3”
并将其转置到
“C2”
,然后循环,直到B列中有一些数据。(因此,选择并复制下一个
“B4:B5”
,并将其转置到
“B4”

我不能让它在正确的位置转置然后循环

我有类似的东西(我还没有向这个宏添加循环):


不需要VBA。在C2中输入:

=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2)
=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2+1)
然后向下复制并在D2中输入:

=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2)
=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2+1)
并抄写:

如果您需要将此作为VBA工作的一部分:

Sub dural()
    Dim i As Long
    Dim r1 As Range, r2 As Range

    For i = 2 To 10 Step 2
        Set r1 = Range("B" & i & ":B" & (i + 1))
        Set r2 = Range("C" & i)

        r1.Copy

        r2.PasteSpecial Transpose:=True
        r2.Offset(1, 0).PasteSpecial Transpose:=True
    Next i
End Sub

不需要VBA。在C2中输入:

=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2)
=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2+1)
然后向下复制并在D2中输入:

=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2)
=INDEX(B:B,ROUNDUP(ROWS($1:1)/2,0)*2+1)
并抄写:

如果您需要将此作为VBA工作的一部分:

Sub dural()
    Dim i As Long
    Dim r1 As Range, r2 As Range

    For i = 2 To 10 Step 2
        Set r1 = Range("B" & i & ":B" & (i + 1))
        Set r2 = Range("C" & i)

        r1.Copy

        r2.PasteSpecial Transpose:=True
        r2.Offset(1, 0).PasteSpecial Transpose:=True
    Next i
End Sub
VBA解决方案

Option Explicit

Sub main()
    Dim pasteRng As Range
    Dim i As Long

    With ActiveSheet
        Set pasteRng = .Range("C1:D2")
        With .Range("B2:B" & .Cells(.Rows.count, "B").End(xlUp).Row)
            For i = 1 To .Rows.count Step 2
                pasteRng.Offset(i).Value = Application.Transpose(.Cells(i, 1).Resize(2))
            Next i
        End With
    End With
End Sub
VBA解决方案

Option Explicit

Sub main()
    Dim pasteRng As Range
    Dim i As Long

    With ActiveSheet
        Set pasteRng = .Range("C1:D2")
        With .Range("B2:B" & .Cells(.Rows.count, "B").End(xlUp).Row)
            For i = 1 To .Rows.count Step 2
                pasteRng.Offset(i).Value = Application.Transpose(.Cells(i, 1).Resize(2))
            Next i
        End With
    End With
End Sub

请编辑问题以显示您尝试转置数据时使用的代码。请编辑问题以显示您尝试转置数据时使用的代码。感谢公式解决方案并可应用于各种情况。谢谢,我认为这将有助于在另一个宏中解决我的问题:)欣赏公式解决方案,并可应用于各种情况。谢谢,我认为这将有助于在另一个宏中解决我的问题:)