2015-11-01 49 views
0

我有一個Excel工作表,其中包含不同的足球隊和他們的球隊以及關於各個球員的信息。我想要做的是從我的桌子上連接某些單元格,然後將這些數據放到更簡單的表格中供其他用戶查看,例如,顯示所有團隊中當前哪些球員受傷。我將解釋:根據兩個條件從列中連接某些單元格

F_Team  | Player | Injured 
Liverpool Coutinho  0 
Liverpool Benteke  1 
Liverpool Sturridge  1 
Man U  Rooney   1 
Chelsea  Sterling  0 

所以我在其他表看起來這

F_Team  | Players Injured 
Liverpool Benteke, Sturridge 
Man U  Rooney 

所以數據可以分爲個人的團隊,我只是堅持努力妥善串連它。

我已經嘗試過使用這個VBA,但它回來的是#NAME?,我不知道爲什麼,我不知道我在做什麼是正確的。

Function ConcatenateIf(CriteriaRange As Range, criteriarange2 As Range, _ 
Condition As Variant, condition2 As Variant, ConcatenateRange As Range, _ 
Optional Separator As String = ",") As Variant 'Update 20150414 

Dim xResult As String 
On Error Resume Next 
If CriteriaRange.Count <> ConcatenateRange.Count Then 
ConcatenateIf = CVErr(xlErrRef) 
Exit Function 
End If 

For i = 1 To CriteriaRange.Count 
If CriteriaRange.Cells(i).Value = Condition And criteriarange2 = condition2 Then 
    xResult = xResult & Separator & ConcatenateRange.Cells(i).Value 
End If 
Next i 

If xResult <> "" Then 
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1) 
End If 
ConcatenateIf = xResult 
Exit Function 
End Function 

和公式我使用:

=CONCATENATEIF($D$2:$D$20000, $L$2:$L$20000, Z2, 1, $E$2:$E$20000) 

列d是F_Team E欄是球員 L欄受傷 列Z是F_Team是什麼來匹配列d

回答

1

If CriteriaRange.Cells(i).Value = Condition and criteriarange2 = condition2 Then

應該是:

If CriteriaRange.Cells(i).Value = Condition And criteriarange2.Cells(i).Value = condition2 Then 

P.S:在我的測試中,與原來的代碼,我沒有得到#NAME,但所有球員的完整列表。這是因爲On Error Resume Next聲明。我強烈建議省略這個聲明:因爲這是一個UDF,如果用戶錯誤地輸入它,讓Excel以自己的方式處理錯誤(顯示#VALUE),而不是顯示任何錯誤的數據。

+0

謝謝你。我現在已經開始工作了。謝謝 – theWolf

+0

@theWolf歡迎,很高興幫助:) –

相關問題