【发布时间】:2019-03-19 09:15:21
【问题描述】:
提前致谢。 如果有人知道这一切,我会非常高兴;-) 这不一定是在 VBA 中,如果可能的话,也欢迎使用 excel 公式的解决方案。
我正在尝试执行以下操作: 有一个包含 6000 多个公司名称的工作表。另一个工作表显示了可以签署给每个公司的任务类型。 我想创建一个新的工作表,其中每个公司名称都有 n 次,并且在每行的最后一列之后是其中一个任务。
工作表1:
公司A|地址A|城市A
公司B|地址B|城市B
工作表2:
任务1|说明1|持续时间1
任务2|解释2|持续时间2
要创建的新 Worksheet3:
公司A|地址A|城市A|任务1|说明1|持续时间1
公司A|地址A|城市A|任务2|说明2|持续时间2
公司B|地址B|城市B|任务1|说明1|持续时间1
公司B|地址B|城市B|任务2|说明2|持续时间2
我开始的方式是复制 worksheet1 的行 n 次,我发现了一个可能有用的旧线程。 This is where I found something about copying 1 row multiple times
我定制了一点(我的 excel 版本是荷兰语,所以“sheet”是“blad”)。不幸的是,这不起作用并给出了错误。
Sub DuplicateRows()
Dim currentRow As Integer
Dim currentNewSheetRow As Integer: currentNewSheetRow = 1
For currentRow = 1 To 5 'The last row of your data
Dim timesToDuplicate As Integer
timesToDuplicate = CInt(Blad1.Range("O" & currentRow).Value2) ' Error line
Dim i As Integer
For i = 1 To timesToDuplicate
Blad3.Range("A" & currentNewSheetRow).Value2 = Blad1.Range("A" & currentRow).Value2
Blad3.Range("B" & currentNewSheetRow).Value2 = Blad1.Range("B" & currentRow).Value2
Blad3.Range("C" & currentNewSheetRow).Value2 = Blad1.Range("C" & currentRow).Value2
currentNewSheetRow = currentNewSheetRow + 1
Next i
Next currentRow
End Sub
此行出现错误(error 13 Type mismatch):
timesToDuplicate = CInt(Blad1.Range("O" & currentRow).Value2)
【问题讨论】:
-
您要求的是笛卡尔积,这是您可以使用 Power Query 执行的操作。 Google for excel power query cartesian product 你会发现很多指南
-
@你能上传两张纸的图片吗?
-
我发布了图片。让真实数据的私密性变得简单;-)