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

All Possible combinations of data in multiple columns separated by a delimiter

我能够对多个列执行笛卡尔乘积,这些列在每个单元格中都有一个值。但是,我想知道是否有一种方法可以将由定界符分隔的未展平数据转换为笛卡尔积

例如

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

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

开始吧,将 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 行。您可以根据需要调整范围。