求帮忙写个VBA代码,跪求

要求:1、两个字名字,通过A列和B列组合出所有两个字的名字 2、三个字名字,通过A列和B列组合出所有三个字的名字,但不包含叠字名。比如王 娜娜 3、不限于图片这些,补充多少行都可以宏出来

Sub 二个字()
Dim Arr, Brr, i&, j&, l&, Crr(), N&
With ActiveSheet
Arr = .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp))
Brr = .Range(.Cells(2, "B"), .Cells(.Rows.Count, "B").End(xlUp))
N = UBound(Arr) * UBound(Brr) + 9
ReDim Crr(1 To N, 1 To 1)
l = 0
For i = 1 To UBound(Arr)
For j = 1 To UBound(Brr)
l = l + 1
Crr(l, 1) = Arr(i, 1) & Brr(j, 1)
Next j
Next i
.Cells(2, "C").Resize(N, 1) = Crr
End With
End Sub

Sub 三个字()
Dim Arr, Brr, i&, j&, k&, l&, Crr(), N&
With ActiveSheet
Arr = .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp))
Brr = .Range(.Cells(2, "B"), .Cells(.Rows.Count, "B").End(xlUp))
N = UBound(Arr) * UBound(Brr) * UBound(Brr)
ReDim Crr(1 To N, 1 To 1)
l = 0
For i = 1 To UBound(Arr)
For j = 1 To UBound(Brr)
For k = 1 To UBound(Brr)
If j <> k Then
l = l + 1
Crr(l, 1) = Arr(i, 1) & Brr(j, 1) & Brr(k, 1)
End If
Next k
Next j
Next i
.Cells(2, "D").Resize(N, 1) = Crr
End With
End Sub追问

请问两个字的N = UBound(Arr) * UBound(Brr) + 9,这里为什么要加9,个数不就是A列多少个字*B列多少个字吗

追答

因为结果数据单元格区域没做清空处理,所以多点空间以分段。

温馨提示:答案为网友推荐,仅供参考
相似回答