复制条件 VBA 上的行



我需要一些想法,如何复制符合条件的行。

我有这样的数据:

   A        B                          C     D
1   Country  Brand                      Model Year
2   France   Peugeot, Citroen (France)  Car   2003
3   Germany  VW, Opel, BMW (Germany)    Car   2003
...

目标是每个带有其参数的汽车品牌都将位于单独的行/我想做的是将 #2 行复制到表的底部,并将 #3 行复制到表的底部 2 次。还要创建显示品牌的列F

结果应如下所示:

    A        B                          C     D      F
1   Country  Brand                      Model Year
2   France   Peugeot, Citroen (France)  Car   2003   Peugeot
3   France   Peugeot, Citroen (France)  Car   2003   Citroen
4   Germany  VW, Opel, BMW (Germany)    Car   2003   VW
...

另外,我在单独的工作表中有品牌列表。

我应该尝试搜索,还是尝试从单独的工作表中匹配列表中的这些品牌?

我是vba新手,所以任何想法和建议将不胜感激!

如果 B 列始终在括号中包含 A 列中的国家/地区,请考虑在执行拆分之前将其从列中删除。像这样:

Dim originalWs as Excel.Worksheet, newWs as Excel.Worksheet
Dim countryName as String, allBrands as String, brandArray() as String
Dim rowNumber as long, nextRow as long, i as long
rowNumber = 2 : nextRow = 2

countryName = originalWs.Cells(rowNumber,1)
allBrands = originalWs.Cells(rowNumber,2)
brandArray = Split(Replace(allBrands,"(" & countryName & ")",""),",")

For i = lbound(brandArray) to ubound(brandArray)
  nextRow = nextRow+1
  With newWs
    .Cells(nextRow,1) = countryName
    .Cells(nextRow,2) = allBrands
    .Cells(nextRow,3) = originalWs.Cells(rowNumber,3)
    .Cells(nextRow,4) = originalWs.Cells(rowNumber,4)
    .Cells(nextRow,5) = brandArray(i)
  End With
Next i

关键是您必须为以下各项维护单独的计数器:

  • 原始工作表中的行
  • 要插入到新工作表中的行
  • 阵列中的品牌

祝你好运!