复制并粘贴但插入行并转置一些行

时间:2014-03-19 22:53:22

标签: excel-vba copy-paste transpose vba excel

我在电子表格中详细说明了我希望转换为不同格式的订单。数据遇到例如: 客户订单日期产品订购号行无描述1描述2描述3 B& Q 1月1日梯子1 1步梯灰色短 B& Q 1月1日油漆1 2户外哑光绿 特易购1月8日食品2 1野餐食品派对1月

如果可能的话,我正在寻找一个将每行复制并粘贴到多行的宏。因此需要为每个包含客户参考/订单日期的唯一客户记录创建标题行。然后下面的行将包含客户参考产品详细信息等

客户订单日期产品订单否行无叙述 B&问题1     1月10日梯子1梯子                     灰色                     短     1月11日油漆2室外                     马特                     绿色 特易购2
    1月8日食物1野餐食物                     派对                     扬

我的vba非常基本我尝试过使用记录功能,但无法让它自动转到下一行。除了指向特定的单元格并在复制和粘贴中使用一点转置之外,我无法绕过它来移动它。源数据的范围可以从50行到200多个。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这段代码有点蛮力"但它可以解决问题。我假设您的所有数据都在第一行,并且每条记录都有8列。如果这些不是真的,我确定您可以更改此代码中的变量,使其适用于您的数据。

Sub RearrangeData()

' Set a couple of variables
iColToRead = 9  ' Start at 9 because the first 8 columns are headers
iRowToDisplay = 2   ' Start at 2 because row 1 has the source data

' Loop through the cells on row 1
Do While Cells(1, iColToRead).Value <> ""

    ' Loop through the columns
    For iColAdd = 0 To 7

        ' Copy the value from the first row to the corresponding cell in the destination row
        Cells(iRowToDisplay, iColAdd + 1).Value = Cells(1, iColToRead + iColAdd).Value

        ' Clear out the cell in the first row that was just copied
        Cells(1, iColToRead + iColAdd).Value = ""
    Next

    ' "Move" the next section in the source row
    iColToRead = iColToRead + 8

    ' "Move" to the next destination row
    iRowToDisplay = iRowToDisplay + 1

Loop

End Sub

我收录了很多评论,所以代码更有意义。 :)

请务必对此答案进行投票或将其标记为&#34;更正&#34;如果它对你有所帮助!