我有以下数据:
示例:
A B C
EmployeeID EmployeeName EmployeeSalary
-------------------------------------------
E101 JAK 20000
E102 SAM 25000
E103 John 20000
E104 Shawn 30000
我有一个单元格H1
,其中我输入了员工的工资,而下面的单元格是单元格H2, I2, J2
,应该根据单元格中给定的工资列出员工详细信息{{1 }}
我已经使用了H1
函数。
对于细胞H2:
VLOOKUP
对于单元格I2:
=IFERROR(VLOOKUP(H1,C2:A5,1,FALSE),"EmployeeID not found")
对于细胞J2:
=IFERROR(VLOOKUP(H1,C2:B4,2,FALSE),"EmployeeName not found")
注意:以上效果可以显示单个结果,但是当我输入=IFERROR(VLOOKUP(H1,C2:C4,3,FALSE),"EmployeeSalary not found")
时,它只显示单个记录,而不是所有符合给定条件的记录。
答案 0 :(得分:1)
有三种方法可以解决这个问题:
首先是公式:
我设置了这样的字段,这将通过另一种方法变得明显:
所以在J4中我提出了以下公式:
=IFERROR(AGGREGATE(14,6,$C$2:INDEX(C:C,MATCH(1E+99,C:C))/($C$2:INDEX(C:C,MATCH(1E+99,C:C))=$H$2),ROW(1:1)),"")
在H4中我放了:
=IF($J4<>"",INDEX(A$2:INDEX(A:A,MATCH(1E+99,$C:$C)),AGGREGATE(15,6,(ROW($C$2:INDEX($C:$C,MATCH(1E+99,$C:$C)))-1)/($C$2:INDEX($C:$C,MATCH(1E+99,$C:$C))=$J4),COUNTIF($J$4:$J4,$J4))),"")
然后我拖到I4。然后向下拖动所有三个公式,直到您确定已涵盖所有可能的结果。
这是非CSE数组公式。数组公式计算是指数式的,因此我们需要将参考范围限制为所需的最小值。所有INDEX($C:$C,MATCH(1E+99,$C:$C))
找到包含数据的最后一个单元格,并将其设置为结束引用。
第一个IFERROR()
包装器允许将公式复制下来,而不是列表将返回并避开#N/A
。在图片中,公式占据前8行。
其次我们使用高级过滤器:
首先我们设置H1周围的区域:
然后我们导航到“数据”选项卡上的“高级过滤器”。此窗口弹出:
然后我们输入信息:
将复制标记到其他位置。
列表范围是$A$1:$C$5
标准范围是$A$1:$C$5
复制到范围是$H$3:$J$3
然后点击好了。
第三个是模仿高级过滤器的vba:
Sub atfilt()
Dim ws As Worksheet
Dim rng As Range
Dim critrng As Range
Dim cpytorng As Range
Dim lstrow As Long
Set ws = Sheets("Sheet9")
lstrow = ws.Range("A" & ws.Rows.Count).End(xlUp).row
Set rng = ws.Range("A1:C" & lstrow)
Set critrng = ws.Range("H1:H2")
Set cpytorng = ws.Range("H3:J3")
rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=critrng, CopyToRange:=cpytorng, Unique:=False
End Sub
每个都有其缺点:
公式:如果数据集很大(1,000行或更多),则计算将很长。
高级过滤器:每次需要新过滤器时,必须重做每个步骤。这不是自动的。
VBA:它是VBA,需要对如何使用它有一定的了解。
答案 1 :(得分:0)
我同意@Scott Craner的评论,即autofilter在这里很棒,可以根据标准找到多个值。不幸的是(也许有人可以填补这一点:))为此目的,我不太了解vba中的自动过滤器(仅使用一次或两次)
我可以告诉你有关INDEX(MATCH())的左查找,它应该可以代替你的VLOOKUPS。
<强>格式:强>
INDEX(&#34;要返回的值列&#34; ,MATCH(&#34;查找值&#34; ,&#34;列找到查找值&#34; ,0))
所以在您的单元格H2示例中,您可以使用:
=IFERROR(INDEX($A:$A,MATCH(H1,$C:$C,0)),"EmployeeID not found")
注意&#34; 0&#34;在公式中找到一个完全匹配!