VBA:动态组合两组列

时间:2016-12-04 13:38:03

标签: excel vba excel-vba

我有一组列,其间有一些列,然后是另一组列,即:

在:

ColA ColB ColC ColA ColB ColC RandomCol1 RandomCol2 ColA ColB ColC ColA ColB ColC
 1    2     3    4    5    6    N/A         N/A       7    8    9   10   11   12

后:

ColA        ColB        ColC      RandomCol1   RandomCol2
 1;4;7;10   2;5;8;11    3;6;9;12     N/A         N/A

如果第一组是“空白”:

在:

 ColA    ColB    ColC   ColA    ColB   ColC   RandomCol1   RandomCol2  ColA   ColB  ColC  ColA   ColB   ColC
blank    blank   blank  blank   blank  blank    N/A         N/A           7     8    9    10      11     12

后:

ColA        ColB        ColC      RandomCol1   RandomCol2
7;10        8;11        9;12        N/A           N/A

我想将每列的每一行中的值与由;分隔的相同名称组合,然后删除剩余的列。此外,如果第一组中的值为“空白”,那么它应该只取第二组中的值(在随机列之后)

不应合并随机列

我尝试了这个,当中间有随机列时似乎不起作用(如果值为“空白”,也不知道如何添加跳过第一个“group”的逻辑:

    For DestCol = StartCol To EndCol
   For ReadCol = DestCol + 1 To EndCol
      If Cells(1, DestCol) = Cells(1, ReadCol) Then
         For i = 2 To lastRow
            If Cells(i, ReadCol) <> "" Then
               Cells(i, DestCol) = Cells(i, DestCol) & ";" & Cells(i, ReadCol)
            End If
         Next i
      End If
   Next ReadCol
Next DestCol

0 个答案:

没有答案