如何将2个独立的数组合并成一个广泛的组合列表
我一直在寻找它,但我似乎无法find答案,虽然这似乎是一个普遍的问题。
我试图自动化在Excel中的单元格的重复。 我有两个列表:列表1与值1,2,3,4和第二个列表是值为a,b,c,d。 现在我想要列表1中的每个值都有一个文件,列表2中的值在Excel中重复。 所以:
1 - a 1 - b 1 - c 1 - d 2 - a 2 - b 2 - c 2 - d 3 - a ...
我想知道在Excel中是否有一个函数,或者如果不是我可以用来解决这个问题的macros? 对于这个简短列表,自动填充当然很容易,但是当列表包含几百个值时,它变得更加复杂。
这应该是很容易理解…
打开VBE ALT + F11并右键单击VBA项目。 插入一个模块并复制粘贴下面的代码。 打F5运行
Sub Main() Dim number As Range Dim letter As Range For Each number In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) For Each letter In Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row) With Sheet2 .Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1) = number .Range("B" & .Range("b" & Rows.Count).End(xlUp).Row + 1) = letter End With Next Next End Sub
上面的代码假定你的sheet1看起来像这样
结果将会像这样在Sheet2上
您也可以在没有VBA的情况下使用一些公式/支持列来执行此操作:
我们假设你的第一个类别在A列,A2开始,你的类别在B列。
- 确定每个类别的logging计数,例如在C1:
=COUNTA($A:$A)-1
(假定标题行)和C2等价物 - 放置两个支持列,例如在E和F中) – E将保持第一个类别的行,F为第二个类别的Id。 将下面的公式放在E2中:
=IF(ISTEXT(E1),1,IF(F2=1,E1+1,E1))
并且这在F2中=IF(ISTEXT(F1),1,IF(F1=$C$2,1,F1+1))
- 最后的结果再增加两列 – 公式
=INDEX(A:A,E2+1)
类别1的G和公式=INDEX(B:B,F2+1)
类别2的H。 - 现在只需将E:H列的公式复制一遍,就可以根据需要select多行(需要的行数为
=C1*C2
最后它会看起来像这样:
你可以在这里下载文件 。