我能够在多个列上执行笛卡尔积,每个列中都有一个值。但是,我想知道是否有办法将由分隔符分隔的Unflattened Data转换为笛卡尔积?
例如
ID ID2 String String2
123 123;1234;1234 Sample; Sample; Sample other; other
我想要显示所有可能的组合。
答案 0 :(得分:0)
在这里,将4列中的每一列拆分为“;”中的数组然后嵌套循环它们全部:
Sub Cartesian()
Dim MyStr1 As Variant, MyStr2 As Variant, MyStr3 As Variant, MyStr4 As Variant, Str1 As Variant, Str2 As Variant, Str3 As Variant, Str4 As Variant, X As Long
MyStr1 = Split(Range("A2").Text, ";")
MyStr2 = Split(Range("B2").Text, ";")
MyStr3 = Split(Range("C2").Text, ";")
MyStr4 = Split(Range("D2").Text, ";")
X = 4
For Each Str1 In MyStr1
For Each Str2 In MyStr2
For Each Str3 In MyStr3
For Each Str4 In MyStr4
Range("A" & X).Formula = Str1
Range("B" & X).Formula = Str2
Range("C" & X).Formula = Str3
Range("D" & X).Formula = Str4
X = X + 1
Next
Next
Next
Next
End Sub
我有第2行的数据,这开始向第4行开始发布。您可以根据需要使用您的范围。