【问题标题】:Copy and paste but insert lines and transpose some lines复制和粘贴但插入行并转置一些行
【发布时间】:2014-03-20 07:11:05
【问题描述】:

我有一份电子表格详细信息,其中包含我希望需要转换为不同格式的订单。例如遇到的数据: 客户 订单日期 产品订单号 行号 描述 1 描述 2 描述 3 百安居 1 月 10 日阶梯 1 1 阶梯阶梯灰色短 百安居 1 月 11 日油漆 1 2 户外哑光绿色 乐购 1 月 8 日食品 2 1 野餐食品派对 1 月

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

客户订单日期产品订单无行无叙述 百安居 1
1 月 10 日阶梯 1 阶梯阶梯 灰色的 短的 1 月 11 日 油漆 2 户外 马特 绿色的 乐购 2
1 月 8 日食物 1 野餐食物 聚会 一月

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

非常感谢您的帮助。

【问题讨论】:

    标签: excel copy-paste transpose vba


    【解决方案1】:

    这段代码有点“蛮力”,但它可以解决问题。我假设您的所有数据都在第一行,并且每条记录都有 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
    

    我包含了很多 cmets,所以代码会更有意义。 :)

    如果对您有帮助,请务必对此答案进行投票或将其标记为“正确”!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多