ฉันกำลังพยายามแก้ไขโค้ดที่ฉันพบ เป็นฟังก์ชัน VBA ที่ค้นหาอินสแตนซ์ทั้งหมดของค่าเซลล์ จากนั้นจะส่งกลับค่าเซลล์จากแต่ละอินสแตนซ์ลงในเซลล์เดียว ฉันกำลังพยายามส่งคืนเฉพาะค่าที่ไม่พบ และจบลงด้วยเซลล์ที่ไม่มีค่าที่ซ้ำกัน
รหัสต้นฉบับ:
Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String
For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string Then
result = result & " " & Return_val_col.Cells(i, 1).Value
End If
Next
Lookup_concat = Trim(result)
End Function
ฉันได้แก้ไขโค้ดเป็นสิ่งนี้ ฉันเยื้องการแก้ไขแทนที่จะเก็บไว้ในบรรทัดเดียวกันเพื่อให้อ่านง่ายขึ้น
Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String
For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string
And Not (InStr(1, result, Return_val_col.Cells(i, 1).Value)) Then
result = result & " " & Return_val_col.Cells(i, 1).Value
End If
Next
Lookup_concat = Trim(result)
End Function
เวอร์ชันนี้ใกล้เคียงกับฟังก์ชัน PHP !strstr
มากที่สุด (ที่ฉันเข้าใจ) และบางทีการพยายามใช้เทคนิค PHP กับ VBA ก็เป็นสิ่งที่ฉันคิดผิด ความคิดของฉันคือสตริงผลลัพธ์ถูกกรอกจริง ๆ หลังจากคำสั่ง Instr
ของฉัน ซึ่งเป็นสาเหตุที่ทำให้ใช้งานไม่ได้