Excel宏:将数据从一行排列到不同的列

时间:2016-12-01 18:12:53

标签: excel vba excel-vba

我有一个只有一列的Excel文件。我想将前4行的内容移动到4个不同的列中(第1列中的第一行,第2列中的第二行等)然后我想重复此相同操作,直到列中的所有值都已分配到这四列(四行重复一系列)。 然后,每一行都有一个我想要找到的唯一单词,并且基于此我想将它(剪切和粘贴)移动到特定列。我认为下面的例子更容易解释。我想找到'cheese'这个词,如果找到了,我希望将它移到第二列,重复这个操作,直到所有包含'cheese'字样的行都排列成一列。我正在尝试将数据排列到一个表格中,以后我可以进一步使用。 谢谢您的帮助。 我从.txt文件中获取数据并将其放入Excel中也证明有点困难。

实施例

Row1
Cheese: 250
Row2
Ham: 35
Row3
Cheese: 200
Row 4
Ham:40
Row5
Cheese: 230
Row6
Ham:45

代码

Sub test4()

    Dim lastrow As Long
    lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    For i = 1 To lastrow
        Range("A1").Activate
        Cells.Find(What:="Part").Copy
        If ActiveSheet.Cells(i, 2) = "" Then
            ActiveSheet.Cells(i, 2).Activate
            'Range("B1").Activate
            ActiveCell.PasteSpecial (xlPasteAll)
        End If
    Next i
End Sub

2 个答案:

答案 0 :(得分:2)

这将从C1

开始复制数据
Sub test4()
    Const PER_ROW As Long = 4
    Dim i As Long, sht as WorkSheet

    Set sht = ActiveSheet

    For i = 1 To sht.UsedRange.SpecialCells(xlCellTypeLastCell).Row

        sht.Cells(1,3).offset(Application.Floor((i-1)/PER_ROW, 1) , _
                              (i-1) Mod PER_ROW).value = sht.Cells(i,1).Value
    Next i

End Sub

答案 1 :(得分:2)

enter image description here

Sub MoveData()
    Dim x As Long
    Application.ScreenUpdating = False

    For x = 1 To Range("A" & Rows.Count).End(xlUp).Row
        Range("B1:E1").Cells(x).Value = Cells(x, 1).Value
    Next

    Columns(1).Delete
    Columns.AutoFit
    Application.ScreenUpdating = True
End Sub