我需要能够在整个表格中搜索符合多个条件的行。我们使用以.csv文件形式输出数据的程序。它有分隔数据集的行,这些标题中的每一个都没有任何自己唯一的列,但如果我在表中搜索多个值,我应该能够精确定位每个标题行。我知道我可以使用Application.WorksheetFunction.Match在单个条件上返回一行,但我需要搜索两个或三个标准。
在伪代码中,它将是这样的:
Return row number were column A = bill & column B = Woods & column C = some other data
答案 0 :(得分:1)
我们需要使用数组:
有两种数组:
numeric {1,0,1,1,1,0,0,1}
boolean {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}
要在它们之间进行转换,我们可以使用:
MATCH function
MATCH(1,{1,0,1,1,1,0,0,1},0) -> will result {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}
simple multiplication
{TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}*{TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE} -> will result {1,0,1,1,1,0,0,1}
你可以检查匹配函数中的数组,如下图所示输入,请注意MATCH函数将把一个阵列作为一个“或”函数处理(一个匹配将导致为真) 即:
MATCH(1,{1,0,1,1,1,0,0,1},0)=TRUE
, YOU MUST CTR+SHIFT+ENTER !!! FOR IT TO GIVE AN ARRAY BACK!!!
在下面的例子中,我表明我想总结所有员工的小时数,除了每个案例的管理员
我们有2个选项,简单的长路,复杂的快捷方式:
long simple way
D2=SUMPRODUCT(C2:C9,(A2=A2:A9)*("admin"<>B2:B9)) <<- SUMPRODUCT makes a multiplication
基本上A1 = {2,3,11,3,2,4,5,6} * {0,1,1,0,0,0,0,0}(它必须是一个数字阵列正确的生产!!!) 即:A1 = 2 * 0 + 3 * 1 + 11 * 1 + 3 * 0 + 2 * 0 + 4 * 0 + 5 * 0 + 6 * 0
这会导致问题,因为如果您拖动单元格以自动完成其余单元格,它将编辑较低和较高的值 即:D9 = SUMPRODUCT(C9:C16,(A9 = A9:A16)*(“admin”&lt;&gt; B9:B16)),超出范围 如果您有一个表并希望以不同的顺序查看结果
,则与上述相同 the fast complicated way
D3=SUMPRODUCT(INDIRECT("c2:c9"),(A3=INDIRECT("a2:a9"))*("admin"<>INDIRECT("b2:b9")))
它是相同的,除了在自动填充或表重新排序时我们不想修改的单元格上使用INDIRECT 请注意,INDIRECT有时会给出VOLATILE ERROR,我建议不要在单个单元格上使用它或在阵列中只使用它一次
f * c *我无法发布图片:( 表是:
case emplyee hours totalHoursPerCaseWithoutAdmin
1 admin 2 14
1 him 3 14
1 her 11 14
2 him 3 5
2 her 2 5
3 you 4 10
3 admin 5 10
3 her 6 10
并且对于检查数组的函数,打开插入函数按钮(它看起来像和fx)然后双击MATCH然后如果你在Lookup_array里面输入一个像 A2 = A2:A9对于我们的示例,它将给出{TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE},因为只有前3行来自case = 1
答案 1 :(得分:0)
这样的东西?
假设您在A1:C20中输入数据
我正在寻找&#34;比尔&#34;在A
,&#34; Woods&#34;在B
和&#34;其他一些数据&#34;在C
适用时更改
= IF(INDEX(A1:A20,MATCH(&#34;比尔&#34;,A1:A20,0),1)=&#34;比尔&#34;,IF(INDEX(B1:B20,比赛(&#34; Woods&#34;,B1:B20,0),1)=&#34; Woods&#34;,IF(INDEX(C1:C20,MATCH)(&#34;其他一些数据&#34; ,C1:C20,0),1)=&#34;其他一些数据&#34;,MATCH(&#34; Bill&#34;,A1:A20,0),&#34; Not Found&#34;) ))
<强>快照强>
答案 2 :(得分:0)
我会使用这个数组*公式(三个标准):
=MATCH(1,((Range1=Criterion1)*(Range2=Criterion2)*(Range3=Criterion3)),0)
*使用Ctrl+Shift+Enter
提交