急!!!excel高手请进

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:04:28
请教各位excel高手:excel中列中有如下数据
289_alpha
578_alpha
679_alpha
874_alpha
我想让这些数据两两组合变成A、B两列,如下这样
289_alpha 578_alpha
289_alpha 679_alpha
289_alpha 874_alpha
578_alpha 679_alpha
578_alpha 874_alpha
679_alpha 874_alpha
也就是说如果A列有10个数,那么将有10*9/2=45种组合,我想把A列的组合都列出来。

做了一个宏,把结果放到了第3第4列了。
Sub Macro1()
Dim k
k = 1
'行号
hang = Range("A1").End(xlDown).Row
For i = 1 To hang
For j = i + 1 To hang
Cells(k, 3) = Cells(i, 1)
' 说明Cells(k, 3)中的3表示结果的第一列数据放置放置在第3列
Cells(k, 4) = Cells(j, 1)
' 说明Cells(k, 4)中的4表示结果的第一列数据放置放置在第4列
k = k + 1
Next
Next

End Sub

可以用vba实现,用公式有点困难

花了点心思,不是很完美,你先用者,我再改进下!

假设你的原始数据有10个,那么先粘贴到

A2:A11

注意,第一行空,是方便以后的操作.没办法,为了公式的简单只能出此下策:

第二:B列为一辅助列;C D两列是组合;E列是组合统计,可以不要,只是为了验证;

B2输入公式:

=IF(ROW()-1>COUNTA(A:A)*(COUNTA(A:A)-1)/2,"",IF(ROW()=2,1,IF(COUNTA(A:A)-B1-COUNTIF($B$1:B1,B1)<=0,B1+1,B1)))

C2输入公式:

=IF(B2="","",OFFSET($A$1,B2,))

D2输入公式:

=IF(B2="","",OFFSET($A$1,COUNTIF($B$2:B2,B2)+B2,))

E2输入公式:

=IF(ROW()=2,1,IF(B2="","",E1+1))

然后选中