A 1 a 1
B 2 b 1
C 3 c 4
D 4 d 4
E 5 e 2
F 6 f 3
G 7 g 3
H 8 h 4
I 9 i 5
J 10 j 11
K 11 k 4
L 12 l 10
四列别分对应ABCD列,就想如果B和D列的数字相同,能在另一张表上面返回一个A列和C列的组合,比如A_a,A_b,D_d,D_h,这个用什么能实现
B1列和D列的每一个数字都进行一次对比。然后返回一个数字,不是只是对比同一行。然后返回A列和C列的所有可能出现的组合。
第1个回答 2018-08-28
这样吗?:=IF(B1=D1,A1&"_"&C1,"") 下拉
追问你这个只有同一行对比,不够。需要B1和D列的所有都对比一下。
追答你要的结果是不是这样子,VBA写的要不要?
能给发一下EXCEL吗?我只是突然想到这个问题,想解决一下。
第2个回答 2018-08-28
这个是组合题
尊重劳动,看我信息加我吧,写代码可减轻你劳动。
A_a
A_b
B_e
C_f
C_g
D_c
D_d
D_h
D_k
E_i
J_l
K_j追问
Dim Arr, Brr, i&, j&, k&
Arr = [a1:b12]
Brr = [c1:d12]
For i = 1 To UBound(Arr)
For j = 1 To UBound(Brr)
If Arr(i, 2) = Brr(j, 2) Then
k = k + 1: Cells(k, "G") = Arr(i, 1) & "_" & Brr(j, 1)
End If
Next j
Next i
End Sub
尊重劳动,看我信息加我吧,写代码可减轻你劳动。
A_a
A_b
B_e
C_f
C_g
D_c
D_d
D_h
D_k
E_i
J_l
K_j追问
是我要的结果。我就是遇到了这样的问题,寻求一下帮助。顺便学一下,所以在百度问问。有好心人帮忙解决了就好。没法解决就算了。
追答Sub 组合()Dim Arr, Brr, i&, j&, k&
Arr = [a1:b12]
Brr = [c1:d12]
For i = 1 To UBound(Arr)
For j = 1 To UBound(Brr)
If Arr(i, 2) = Brr(j, 2) Then
k = k + 1: Cells(k, "G") = Arr(i, 1) & "_" & Brr(j, 1)
End If
Next j
Next i
End Sub
Cells(k, "G")这个输出位置自己随意更改!
谢谢,就是跑到70多行的时候直接不继续想下跑了。我有几百行的数据。如果组合下来,估计能跑几千行。需要改那个变量吗?
追答直接改两个 【】的区域就好了。
追问改了数字,发现多了以后就出现这种情况。可能已经跑完了数据,但是就是不停止下来。还会一直弹这个窗口。
我这个代码跟这个提示没关系,你不要瞎弄!
本回答被提问者采纳第3个回答 2019-07-09
Excel排列组合工具,如下图:
地址: ,点击:
一键出排列组合的Excel