如何在excel中创建“交叉连接”?

Esp*_*spo 5 microsoft-excel

我在 excel 中有 2 张纸,每张纸有 10 行。Excel 中是否有某种“交叉连接”公式/宏,它允许我创建第三个工作表,其中所有行都交叉连接(总共 100 行)。

Pra*_*ate 3

如果使用 OLEDB 不是一个选项,下面的函数可用于生成叉积

Option Base 1

Function Cross_Product_range(r1 As Range, r2 As Range) As Variant
    Cross_Product_range = Cross_Product_array(r1.Value, r2.Value)
End Function

Function Cross_Product_array(a1 As Variant, a2 As Variant) As Variant
    On Error GoTo ErrorHandler
    Dim TempArray(), k, m
    ReDim TempArray(UBound(a1) * UBound(a2), UBound(a1, 2) + UBound(a2, 2))
    k = 1
    For i = 1 To UBound(a1)
        For j = 1 To UBound(a2)
            m = 1
            For u = 1 To UBound(a1, 2)
                TempArray(k, m) = a1(i, u)
                m = m + 1
            Next
            For u = 1 To UBound(a2, 2)
                TempArray(k, m) = a2(j, u)
                m = m + 1
            Next
            k = k + 1
        Next
    Next
    Cross_Product_array = TempArray
    Exit Function
    ErrorHandler:
    Debug.Print Err
End Function
Run Code Online (Sandbox Code Playgroud)

将上述函数添加到 vba 模块后,生成叉积A1:B5C1:D5选择目标单元格(例如 E1:H25)并输入公式并使用 ctrl + shift + Enter

=Cross_Product_range(A1:B5,C1:D5)
Run Code Online (Sandbox Code Playgroud)