![Excel 公式匹配多个条件](https://linux22.com/image/1593847/Excel%20%E5%85%AC%E5%BC%8F%E5%8C%B9%E9%85%8D%E5%A4%9A%E4%B8%AA%E6%9D%A1%E4%BB%B6.png)
我需要一个 Excel 公式,该公式将查看位置、部门代码和职位,然后返回全名。我遇到的问题是,位置可以使用相同的部门代码和职位。也可能有多个结果,我需要在多个单元格中显示这些结果。这将用于按位置和部门细分员工。我使用的是 Excel 2016。
例如:我想显示所有符合以下条件的名称。
地点——弗吉尼亚州
部门代码 – 02023、02023C、02023A
职位名称 - 搬运工、搬运/服务、细节、服务搬运工、细节侦察员
这是我针对仅有一个标准的职位使用的公式。{=IFERROR(INDEX(Sheet1!$C$2:$C$800,SMALL(IF(Sheet1!$B$2:$B$800="02021A",ROW(Sheet1!$B$2:$B$800)-ROW(Sheet1!$B$2)+1),ROWS(EMPLOYEE!$B16:$B$16))),"")}
答案1
我认为最简单的方法是使用宏。这个方法可行。用电子表格中的名称替换工作表名称,并将其放在工作表的 VBE 模块中。
确保将此位中的 5 替换为您要打印名称的列。
然后您可以根据该列进行过滤,这样就得到了列表。
让我知道这个是否奏效。
谢谢!
ccccThisWorkbook.Sheets("Sheet1").Cells(intCurrentRow, 5).Value = strCurrName
Sub find()
Dim strLocation As String
Dim strHOmeDept As String
Dim strJobTitle As String
Dim strCurrentLoc As String
Dim strCurrHomeDept As String
Dim strCurrJobTitle As String
Dim strCurrName As String
Dim intCurrRow As Integer
Dim intEndRow As Integer
Dim i As Integer
intCurrentRow = 1
intEndRow = ActiveWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To intEndRow
intCurrentRow = intCurrentRow + 1
strCurrentLoc = ThisWorkbook.Sheets("Sheet1").Cells(intCurrentRow, 1).Value
strCurrHomeDept = ThisWorkbook.Sheets("Sheet1").Cells(intCurrentRow, 2).Value
strCurrJobTitle = ThisWorkbook.Sheets("Sheet1").Cells(intCurrentRow, 4).Value
strCurrName = ThisWorkbook.Sheets("Sheet1").Cells(intCurrentRow, 3).Value
If strCurrentLoc = "VIRGINIA" And _
(strCurrHomeDept = "02023" Or strCurrHomeDept = "02023C" Or strCurrHomeDept = "02023A") _
And (strCurrJobTitle = "DETAILER-RECON" Or strCurrJobTitle = "PORTER" Or strCurrJobTitle = "DETAIL" Or strCurrJobTitle = "SERVICE PORTER" _
Or strCurrJobTitle = "PORTE/SERV") Then
ThisWorkbook.Sheets("Sheet1").Cells(intCurrentRow, 5).Value = strCurrName
End If
Next
End Sub