在列和转置中选择已定义的行范围

时间:2015-06-11 06:20:43

标签: excel-vba vba excel

我需要在一个特定列中选择循环定义的行范围,然后将每个块转换为行。

我在A栏中有数据:

row    A
1      City_1
2      Street_1
3      StreetNo_1
4      State_1
5      City_2
6      Street_2
7      StreetNo_2
8      State_2
9      City_3
10     Street_3
11     StreetNo_3
12     State_3

等等......我需要接受每一个例如...... "四元数"将这些细胞转化为行。所以期望的输出应该是这样的:

row    B            C            D                E
1      City_1       Street_1      StreetNo_1       State_1
4      City_2       Street_2      StreetNo_2       State_2
5      City_3       Street_3      StreetNo_3       State_3
9      City_4       Street_4      StreetNo_4       State_4

我怎么能在Excel VBA中这样做?

2 个答案:

答案 0 :(得分:1)

此函数将值从每四行移动到四列。这正是您所需要的。您将把它放在开发人员选项卡中,在visual basic

Sub MoveValues()

    Dim i As Long
    Dim j As Long

    Dim MyRange As Range
    Dim lngLastRow As Long

    Set MyRange = Worksheets("Sheet1").Range("A" & "1")

    lngLastRow = Cells(65536, MyRange.Column).End(xlUp).Row
    j = 1

    For i = 1 To lngLastRow Step 4

        Worksheets("Sheet1").Range(Cells(i, 1), Cells(i + 3, 1)).Copy
        Worksheets("Sheet2").Range("A" & j).PasteSpecial Transpose:=True
        j = j + 1

    Next

End Sub

答案 1 :(得分:1)

或者,您可以简单地在单元格中编写一个简单的公式。

Sub a2bcde()
    ActiveSheet.Range("B1:E" & Int(ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row / 4)).Formula = "=OFFSET($A$1, (ROW(1:1)-1)*4+(COLUMN(A:A)-1), 0)"
End Sub

将公式的值传回单元格或复制,选择性粘贴,值。