หากมีคนรู้วิธีรับผลลัพธ์ที่คุณต้องการโดยใช้สูตรอาร์เรย์โปรดบอกเรา ฉันไม่คิดว่ามันเป็นไปได้ ... ดังนั้นฉันจึงใช้ VBA นี่คือโซลูชันรหัสของฉัน (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
นี้เป็นผลที่คุณจะได้รับ:
คุณยังสามารถใช้การอ้างอิงช่วงปกติเช่นในฉันจะได้ยังแทรกสูตรนี้I3
=Results(H3,B$3:C$13,E$3:F$10)
วางรหัสลงใน VBA Editor ( Alt + F11 ) ในโมดูล "Module1" ที่เพิ่งแทรก (ไม่ใช่ในโมดูล "ThisWorkbook" หรือ "Sheet")