我一直在寻找它,但我似乎无法找到答案,尽管这似乎是一个常见的问题。
我试图在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中是否有一个函数,或者我是否可以使用它来解决这个问题?对于这个简短的列表,它当然很容易使用自动填充,但当列表包含几百个值时,它会变得更复杂......
答案 0 :(得分:2)
您也可以使用一些没有VBA的公式/支持列来执行此操作:
假设您的第一个类别位于A列,从A2开始,您的类别在B列。
=COUNTA($A:$A)-1
(假设标题行)和C2等效=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,对于具有公式=INDEX(B:B,F2+1)
的类别2,为H. =C1*C2
最后它看起来像这样:
您可以下载file here。
答案 1 :(得分:0)
这应该很容易理解......
打开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上像这样