如何根据 Excel 中的多个条件从列中提取所有唯一值
How to extract all unique values from a column based on multiple criterion in Excel
我试图从基于 vlookup 类型匹配的列中获取所有不同值的列表。
例如:
Sheet 1:
(colA) (colB) (colC)
Health System Name EMR PMR
System A
System B
System C
System D
Sheet 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
我希望能够从 colA in sheet 1 in colA of Sheet 2 中搜索健康系统的名称...并根据它是 PMR 还是 EMR。 ..return 来自 Vendor 列的唯一值的数量进入适当列下 sheet 1 中的一个单元格。
SO 在系统 A 的 Sheet 1 中的 EMR 列下,我想要来自 sheet 2 中供应商列的不同值,其技术 ID 为系统的 "EMR" A.
在这种情况下,它将是:ClinicA、ClinicE
如有任何帮助,我们将不胜感激!
仅使用 excel 公式无法做到这一点,您需要 VBA 解决方案。如果您的 Sheet1
包含如下数据,
和Sheet2
,
试试这个简单的 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
你的输出是,
如果您有新的 TEXTJOIN 函数,请使用 CSE 将其作为数组公式输入。
=TEXTJOIN(", ", TRUE, IF(Sheet2!$A:$A=$F7, IF(Sheet2!$B:$B=G, Sheet2!$C:$C, ""), ""))
向右向下填充。
imgur 现在似乎坏了。 http://imgur.com/a/xCqQb
如果您无法访问较新的 textjoin worksheet function search this site for responses to questions with the textjoin 作为替代品。
我试图从基于 vlookup 类型匹配的列中获取所有不同值的列表。
例如:
Sheet 1:
(colA) (colB) (colC)
Health System Name EMR PMR
System A
System B
System C
System D
Sheet 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
我希望能够从 colA in sheet 1 in colA of Sheet 2 中搜索健康系统的名称...并根据它是 PMR 还是 EMR。 ..return 来自 Vendor 列的唯一值的数量进入适当列下 sheet 1 中的一个单元格。
SO 在系统 A 的 Sheet 1 中的 EMR 列下,我想要来自 sheet 2 中供应商列的不同值,其技术 ID 为系统的 "EMR" A.
在这种情况下,它将是:ClinicA、ClinicE
如有任何帮助,我们将不胜感激!
仅使用 excel 公式无法做到这一点,您需要 VBA 解决方案。如果您的 Sheet1
包含如下数据,
和Sheet2
,
试试这个简单的 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
你的输出是,
如果您有新的 TEXTJOIN 函数,请使用 CSE 将其作为数组公式输入。
=TEXTJOIN(", ", TRUE, IF(Sheet2!$A:$A=$F7, IF(Sheet2!$B:$B=G, Sheet2!$C:$C, ""), ""))
向右向下填充。
imgur 现在似乎坏了。 http://imgur.com/a/xCqQb
如果您无法访问较新的 textjoin worksheet function search this site for responses to questions with the textjoin 作为替代品。