[img]https://img.nga.178.com/attachments/mon_202112/13/-7Q2p-1r0wZgT3cS11p-nl.jpg[/img]
Sub 组合()
arr = Range("A1:A5").Value
brr = Range("C1:E5").Value
bsum = UBound(brr) * UBound(brr, 2)
[A9].Resize(bsum, 1).Value = ""
crr = [A9].Resize(bsum, 1).Value
k = 1
For i = 1 To UBound(arr)
For j = 1 To UBound(brr, 2)
crr(k, 1) = arr(i, 1) & "-" & brr(i, j)
k = k + 1
Next j
Next i
[A9].Resize(UBound(crr), UBound(crr, 2)) = crr
End Sub
code只需要改前5行的单元格地址("A1:A5","C1:E5",[A9]),以及最后一行的单元格地址[A9]。
比如你有100行数据,从A1-A100,有30列(从C1-AF100),然后想把最终结果放在sheet2的[A1]单元格。
(先保证sheet2是存在的,然后执行代码前,要保证当前激活sheet是数据所在表(比如是sheet1),我偷懒没做数据表选择,默认是读取当前活动表的数据。)
那么,code前5行和最后一行就是
Sub 组合()
arr = Range("A1:A100").Value
brr = Range("C1:AF100").Value
bsum = UBound(brr) * UBound(brr, 2)
sheet2.[A1].Resize(bsum, 1).Value = ""
crr = sheet2.[A1].Resize(bsum, 1).Value
k = 1
For i = 1 To UBound(arr)
For j = 1 To UBound(brr, 2)
crr(k, 1) = arr(i, 1) & "-" & brr(i, j)
k = k + 1
Next j
Next i
sheet2.[A1].Resize(UBound(crr), UBound(crr, 2)) = crr
End Sub