在第二次更新中使用MATCH
的确是一种方式,并且在您开始使用COUNTIFS
时添加了这个功能。 (更正为范围的第一行。)
=COUNTIFS(heba_immediate_family!C2:C, B11, heba_immediate_family!D2:D, C11)
因为它是在屏幕截图,在你COUNTIFS
的第一准则是好的,所以我们将通过重建第二个标准开始。更具体地说,范围匹配的是什么,在样本中显示为C11。因为您需要创建累积选择而不是单个选择,所以我们需要使用不等式运算符比较单元格范围与年龄范围。没有任何结果,COUNTIFS
默认为=进行比较。我们需要使用大于或等于的> =,将其更改为明确的比较,以便它与所选范围内的任何内容匹配或更大。这产生了:
=COUNTIFS(heba_immediate_family!C2:C, B11, heba_immediate_family!D2:D, ">="&C11)
接下来的问题是,你的情况是使用什么是真正的在我们所认为的数值范围的文本字符串。要解决这个问题,我们需要使用MATCH
函数。 MATCH
返回相对于范围起点的范围内匹配项目的位置。您已使用age range
表单做好了准备,我们可以使用该表单。然而,我们不需要第二列,因为我们打算使用MATCH
函数而不是VLOOKUP
函数。然而,我们将从MATCH
获得的数字与第二列中列出的数字相同,因此它可以作为便捷的参考。要做到这一点,我们需要在比较的两边使用MATCH
,以便获得相同的参考点。 MATCH
函数通常在一个单元上工作,所以我们还需要ARRAYFORMULA
函数以阵列意义应用第一个MATCH
。最后一点是,MATCH
函数默认假定给定范围按升序排序。由于年龄段确实是文字,因此它们不是。我们需要设置为0 的可选的第三个参数告知此功能,现在,这给了我们:
=COUNTIFS(heba_immediate_family!C2:C, B11, ARRAYFORMULA(MATCH(heba_immediate_family!D2:D, 'age range'!A1:A, 0)), ">="&MATCH(C11, 'age range'!A1:A, 0))
如果你想在对汇总表,每个单元格中键入这一点,我们就大功告成了。如果您想要通过拖动来复制它,那么我们需要用绝对符号锁定一些范围引用,即$。这将给我们:
=COUNTIFS(heba_immediate_family!C$2:C, B11, ARRAYFORMULA(MATCH(heba_immediate_family!D$2:D, 'age range'!A$1:A, 0)), ">="&MATCH(C11, 'age range'!A$1:A, 0))
一个我们可以做更多的事情,使这一切更容易使用是工作表名称公式中的第一列链接的名字。此步骤将需要更改工作表的命名方式,或者在摘要页面的第一列中命名系列的方式,以使它们相同。在汇总表的第一列中,您有heba immediate family
,它引用名为heba_immediate_family
的表。由于输入下划线不如输入空格那么自然,我建议重命名工作表以删除下划线,但任何方式都可以使两者匹配。完成之后,下一部分将使用INDIRECT
函数将文本转换为工作表参考。实际上,由于它的工作原理,我们真的需要使用单元格中的文本作为它的一部分将其转换为范围参考。我们要这样做的方式是将单元格中的文本与范围的固定文本连接起来,如年龄范围列INDIRECT(A3&"!D$2:D")
。对这两个范围进行这样的操作,并将其移入摘要表第一行的数据,得到单元格D3中的最终版本,可根据需要将其复制到所有系列中。完成的公式为:
=COUNTIFS(INDIRECT(A3&"!C$2:C"), B3, ARRAYFORMULA(MATCH(INDIRECT(A3&"!D$2:D"), 'age range'!A$1:A, 0)), ">="&MATCH(C3, 'age range'!A$1:A, 0))
作为进一步的选项,您可以从表中完全删除gender
列。按照定义,上半部分的所有东西都是“M”,下半部分是“F”。因此,删除列B将年龄段移动到列B中,并将公式输入列C。这样做,并且将公式中的性别硬编码给出了两个公式。
对于男性,在细胞C3开始:
=COUNTIFS(INDIRECT(A3&"!C$2:C"), "M", ARRAYFORMULA(MATCH(INDIRECT(A3&"!D$2:D"), 'age range'!A$1:A, 0)), ">="&MATCH(C3, 'age range'!A$1:A, 0))
对于女性,在细胞C11开始:
=COUNTIFS(INDIRECT(A11&"!C$2:C"), "F", ARRAYFORMULA(MATCH(INDIRECT(A11&"!D$2:D"), 'age range'!A$1:A, 0)), ">="&MATCH(C11, 'age range'!A$1:A, 0))
而且,因为我看到的最后一个选项,可能是一个改进使用,我会提出一个最后的改善,有一个理解。如果打算邀请来自全部家庭的相同年龄范围,而不是从家庭的不同范围,则不需要在汇总表的每一行上具有可选择的年龄组。相反,将其设置为工作表顶部的单个单元格,并将所有公式链接到它。另一方面,如果你正在考虑不同家庭的不同年龄段的选择,那么这种改变不是你想要做的。
要做到这一点,再加上有关性别的最后一个选项,再删除列的age group
乙,公式和总数,移动到列乙。在单元格D1中键入“年龄组”,并在单元格E1中创建年龄范围下拉菜单。然后改变这两个公式。
对于男性,在细胞B3开始:
=COUNTIFS(INDIRECT(A3&"!C$2:C), "M", ARRAYFORMULA(MATCH(INDIRECT(A3&"!D$2:D"), 'age range'!A$1:A, 0)), ">="&MATCH($E$1, 'age range'!A$1:A, 0))
对于女性,在单元格B11 开始:
=COUNTIFS(INDIRECT(A11&"!C$2:C), "F", ARRAYFORMULA(MATCH(INDIRECT(A11&"!D$2:D"), 'age range'!A$1:A, 0)), ">="&MATCH($E$1, 'age range'!A$1:A, 0))
我无法把公式在一起..我试着这样:'= filter(heba_immediate_family!A1:A19,Vlookup(C11,'age range'!$ A $ 1:$ B $ 4,2)> Vlookup(heba_immediate_family!D2,'age range'!$ A $ 1:$ B $ 4,2),heba_immediate_family!C1:C19 = B11)',但它返回一个错误: 'FILTER具有不匹配的范围大小。预期的行数:19,列数:1。实际行数:1,列数:1.' – abbood
因此,FILTER()函数不会以这种方式工作,您正试图使用它,但一个快速解决方法是添加将年龄范围组转换为最大年龄的列。这样可以正确使用FILTER()函数。例如,如果转换的列是B,那么公式将是:= filter(heba_immediate_family!A1:A19,heba_immediate_family!B1:B19> = Vlookup(heba_immediate_family!D2,'age range'!$ A $ 1:$ B $ 4,2,FALSE)) –