Odpowiedzi:
Jeśli użycie OLEDB nie jest dostępne, poniższe opcje można wykorzystać do wygenerowania produktu krzyżowego
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
Po dodaniu powyższej funkcji do modułu vba, Aby utworzyć iloczyn krzyżowy A1:B5
i C1:D5
wybrać komórki docelowe (powiedzmy E1: H25) i wprowadzić formułę, użyj kombinacji klawiszy Ctrl + Shift + Enter
=Cross_Product_range(A1:B5,C1:D5)
Możesz to zrobić dość łatwo za pomocą Power Query (jeśli masz to w swojej wersji programu Excel):
Skonfiguruj połączenie danych do każdej tabeli, którą chcesz połączyć: Wybierz tabelę w programie Excel, a następnie wybierz „Z tabeli / zakresu” z „Dane” na wstążce. Spowoduje to wyświetlenie edytora Power Query.
Aby wrócić do programu Excel, kliknij małą strzałkę na przycisku „Zamknij i wczytaj”, wybierz „Zamknij i wczytaj do”, a następnie „Tylko połączenie”. W przeciwnym razie skończysz z kopią tabeli w programie Excel ...
Zrób to samo dla drugiego stołu.
Panel „Zapytania i połączenia” powinien być teraz otwarty po prawej stronie okna. Jeśli nie, kliknij „Dane -> Zapytania i połączenia” na wstążce.
Dwie tabele powinny być wymienione jako zapytania.
Następnym krokiem jest utworzenie kwerendy łączącej łączącej te dwa elementy i zwrócenie wyniku do programu Excel:
Kliknij prawym przyciskiem myszy jedno z zapytań w okienku „Zapytania i połączenia” i wybierz „Odwołanie”. Spowoduje to ponowne otwarcie edytora Power Query i utworzenie trzeciego zapytania wskazującego na jedną z twoich tabel.
Teraz wybierz „Dodaj kolumnę -> Niestandardowa kolumna” ze wstążki Power Query ... Formuła dla nowej kolumny będzie nazwą drugiego zapytania - tj. Danych do połączenia krzyżowego. Jeśli w nazwie nie ma spacji, możesz wpisać ją bezpośrednio (np. = Tabela 2, w przeciwnym razie będzie to = # "Tabela 2".
Powinieneś teraz mieć nową kolumnę z etykietą „Niestandardowa” z „Tabelą” w każdej komórce. Kliknij mały symbol w nagłówku kolumny, aby rozwinąć każdą tabelę.
Wszystko idzie dobrze, gotowe! Kliknij „Zamknij i wczytaj”, a tabela połączona powinna pojawić się w nowym arkuszu.
Należy zwrócić uwagę na jedno: to połączenie krzyżowe nie aktualizuje się automatycznie po zmianie danych źródłowych. Będziesz musiał kliknąć prawym przyciskiem myszy i wybrać „Odśwież”, aby ponownie uruchomić zapytanie dotyczące łączenia krzyżowego.
Prawdopodobnie jest to prostsze niż wydaje mi się!