Hitung nilai yang tidak kosong setelah produk kartesius di excel

2

Saya harap uraian saya akurat; perbaikan diterima.
Saya memiliki 2 tabel di Excel. Dalam Tabel 1 ada 2 kolom, A dan B. Ini bisa berupa hubungan banyak ke banyak.
Dalam Table2 ada 2 kolom, A dan B. Ini adalah entri yang berbeda.
Table1-ColumnB dan Table2-ColumnA adalah nilai yang sama - kunci asing jika Anda mau.

Saya memiliki daftar nilai diskrit dari Table1-ColumnA di Daftar Hasil. Saya perlu tahu apakah untuk setiap item dalam daftar ini, jika setelah bergabung pada kunci asing, jika semua nilai terkait dalam Table2-Column2 kosong. (Saya tidak perlu tahu konten apa yang dimilikinya, hanya jika memiliki konten.)

Ini semua perlu dilakukan dalam satu sel dalam excel.

Tabel dan hasil

tithij
sumber
Bisakah Anda menambahkan contoh dasar data dan hasil yang diinginkan? Apakah ada kolom Anda yang memiliki kendala unik?
freekvd
@freekvd Saya mencoba tangkapan layar, tidak cukup poin ... akan mencoba mengedit dan menambahkan tabel.
tithij
Saya berharap saya bisa mengadaptasi formula yang ditemukan di sini Jumlah vlookup menggunakan rumus array . Jawaban pertama bergantung pada urutan data yang benar, yang saya tidak bisa; dan saya bisa mendapatkan yang kedua untuk bekerja - saya pikir itu ada hubungannya dengan bagian ISNUMBER, tetapi saya tidak yakin.
tithij

Jawaban:

1

Jika seseorang tahu cara mendapatkan hasil yang Anda inginkan menggunakan rumus array, beri tahu kami. Saya tidak berpikir itu mungkin ... Karena itu saya menggunakan VBA. Ini adalah solusi kode saya (UDF):

Option Explicit
Function Results(cell As Range, table_1 As Range, table_2 As Range) As String
Dim aTable1() As Variant
Dim aTable2() As Variant
aTable1 = table_1.Value
aTable2 = table_2.Value
Dim i As Long, j As Long 'counters

For i = 1 To UBound(aTable1, 1)
    If aTable1(i, 1) = cell.Value Then
        For j = 1 To UBound(aTable2, 1)
            If aTable1(i, 2) = aTable2(j, 1) Then
                If Not IsEmpty(aTable2(j, 2)) Then
                    Results = Results & aTable2(j, 1) & " has content, "
                Else
                    Results = Results & aTable2(j, 1) & " has no content, "
                End If
            End If
        Next
        If Results = vbNullString Then
            Results = aTable1(i, 2) & " NOT FOUND"
            GoTo Ending
        End If
    End If
Next
Results = Left(Results, Len(Results) - 2)
If (Len(Results) - Len(Replace(Results, "has", ""))) / 3 = _
(Len(Results) - Len(Replace(Results, "no", ""))) / 2 Then
    Results = "BLANK - " & Results
End If

Ending:
End Function

Ini adalah hasil yang Anda dapatkan: UDF Anda juga dapat menggunakan referensi Rentang biasa, yaitu di I3saya bisa juga dimasukkan rumus ini: =Results(H3,B$3:C$13,E$3:F$10).

Rekatkan kode ke VBA Editor ( Alt + F11 ), dalam modul "Module1" yang baru dimasukkan (bukan dalam modul "ThisWorkbook" atau "Sheet")

ZygD
sumber
terimakasih atas infonya. Setelah disisipkan di editor VBA, bagaimana cara menjalankannya di data saya? Juga, saya mendapatkan masalah referensi melingkar dengan kode Results(H3,B$3:C$13,E$3:F$10)yang Anda tempel. Ada ide?
tithij
Terima kasih @ ZygD; Saya sudah tahu apa yang Anda lakukan di tabel hasil. Masuk akal sekarang ... spreadsheet saya diatur secara berbeda, jadi saya punya kesalahan! Terima kasih.
tithij
Alasan saya belum menerima Anda sebagai jawabannya adalah karena saya tidak bisa memiliki makro di buku kerja. Jadi saya berharap ada orang lain yang memberikan jawaban array. Anda adalah solusi hebat, terima kasih.
tithij