如何将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列。

  1. 确定每个类别的logging计数,例如在C1: =COUNTA($A:$A)-1 (假定标题行)和C2等价物
  2. 放置两个支持列,例如在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))
  3. 最后的结果再增加两列 – 公式=INDEX(A:A,E2+1)类别1的G和公式=INDEX(B:B,F2+1)类别2的H。
  4. 现在只需将E:H列的公式复制一遍,就可以根据需要select多行(需要的行数为=C1*C2

最后它会看起来像这样: 在这里输入图像说明

你可以在这里下载文件 。