如何基于Excel中的多个条件从列中提取所有唯一值

时间:2017-06-04 17:36:25

标签: excel excel-formula textjoin

我正在尝试根据vlookup类型匹配从列中获取所有不同值的列表。

例如:

表1:

      (colA)         (colB)   (colC)
Health System Name    EMR     PMR 

System A       
System B
System C
System D

表2(所有数据均为)

Healthy System Name        Tech ID      Vendor

System A                 PMR         ClinicA
System A                 EMR         ClinicE
System A                 EMR         ClinicA
System B                 EMR         ClinicB
System B                 PMR         ClinicC
System C                 PMR         ClinicA
System C                 PMR         ClinicB  
System C                 EMR         ClinicD
System C                 PMR         ClinicD
System C                 EMR         ClinicG

我希望能够从工作表2的colA中的工作表1中的colA搜索健康系统的名称...并根据它是PMR还是EMR ...返回唯一值的数量供应商列在相应列下的工作表1中的一个单元格中。

在系统A的工作表1的EMR列下,我想要表2中供应商列的不同值,系统A的技术ID为“EMR”。

在这种情况下,它将是:ClinicA,ClinicE

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

您只能使用excel公式才能执行此操作,并且需要VBA解决方案。如果您的Sheet1包含如下数据,

enter image description here

Sheet2

enter image description here

试试这个简单的VBA代码,

Sub uniqueList()
Dim i As Long, j As Long, str As String
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    For j = 2 To Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1) = Sheets("Sheet2").Cells(j, 1) And Cells(1, 2) = Sheets("Sheet2").Cells(j, 2) Then
            If Cells(i, 2) <> "" Then
                str = Cells(i, 2) & " , " & Sheets("Sheet2").Cells(j, 3)
                Cells(i, 2) = str
            Else
                Cells(i, 2) = Sheets("Sheet2").Cells(j, 3)
            End If
        End If
        If Cells(i, 1) = Sheets("Sheet2").Cells(j, 1) And Cells(1, 3) = Sheets("Sheet2").Cells(j, 2) Then
            If Cells(i, 3) <> "" Then
                str = Cells(i, 3) & " , " & Sheets("Sheet2").Cells(j, 3)
                Cells(i, 3) = str
            Else
                Cells(i, 3) = Sheets("Sheet2").Cells(j, 3)
            End If
        End If
    Next j
Next i
End Sub

您的输出将是,

enter image description here

答案 1 :(得分:0)

如果你有新的TEXTJOIN函数,那么输入它作为CSE的数组公式。

=TEXTJOIN(", ", TRUE, IF(Sheet2!$A$2:$A$11=$F7, IF(Sheet2!$B$2:$B$11=G$6, Sheet2!$C$2:$C$11, ""), ""))

向右和向下填充。

imgur现在似乎已经破裂了。 http://imgur.com/a/xCqQb

如果您无权访问较新的工作表功能,请搜索此网站,以获取有关替代方案的问题的回复。