在您的第二次更新中使用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")。对两个范围都这样做,并将其移动到摘要表的 data 第一行,在单元格 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 的列B,将公式和总计移动到列B。在单元格 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))