我们需要使用数组:
有2种数组:
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 函数会将数组视为“或”函数(一个匹配将导致 true 即:
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} (它必须是 SUMPRODUCT 中向右的数字数组!!!) 即: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"< >B9:B16)),如果你有一个表格并且想以不同的顺序查看结果,则与上述相同
the fast complicated way
D3=SUMPRODUCT(INDIRECT("c2:c9"),(A3=INDIRECT("a2:a9"))*("admin"<>INDIRECT("b2:b9")))
它是一样的,除了在自动完成或表格重新排序时我们不想修改的单元格上使用了 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