どのようにエクセルで「クロスジョイン」を作成することができますか?


5

私は2枚のシートを持っていて、それぞれが10列あります。 Excelには、すべての行を交差結合した(合計100行)3番目のシートを作成できるような、ある種の "交差結合"式/マクロがありますか。

回答:


0

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

上記の関数がvbaモジュールに追加されたら、 のクロス積を生成する A1:B5 そして C1:D5 目的の細胞を選択し(例:E1:H25)、式を入力してCtrl + Shift + Enterを押します。

=Cross_Product_range(A1:B5,C1:D5)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.