所有可能的多个列中的数据组合由分隔符分隔

时间:2015-04-28 01:55:46

标签: excel vba excel-vba excel-2010

我能够在多个列上执行笛卡尔积,每个列中都有一个值。但是,我想知道是否有办法将由分隔符分隔的Unflattened Data转换为笛卡尔积?

例如

ID         ID2                  String                      String2
123   123;1234;1234    Sample; Sample; Sample           other; other

我想要显示所有可能的组合。

1 个答案:

答案 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行开始发布。您可以根据需要使用您的范围。