根据两个条件连接列中的某些单元格

我有一个不同的足球队和他们的小队的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列相匹配

如果CriteriaRange.Cells(i).Value = Condition并且criteriarange2 = condition2那么

应该:

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

ps:在我的testing中,用原始代码我没有得到#NAME,而是所有玩家的完整列表。 这是因为On Error Resume Next语句。 我强烈build议省略这个声明:因为这是一个UDF,如果用户错误地input它,让Excel以自己的方式处理错误(显示#VALUE),而不是显示任何错误的数据。