2017-08-29 286 views
0

背景

我正在制作一个电子表格,用于计划参加婚礼的与会者。将有男女分开的大厅,我们正在讨论哪些年龄组应该被邀请。现在我有一个选项卡我在我的床单被称为age range,它具有以下的年龄范围:如何在Google表格中逐步排序

  • 0 - 3
  • 4 - 12
  • 12 - 18
  • 18+

我有一个标签有不同的家庭,以及他们的性别,年龄范围等如此列出: enter image description here

这里是汇总表:

enter image description here

问题

做这个表格的目的是为了能够快速地作出这样的决定:做我们想要邀请家人X/Y/Z大家与12岁以上的每个人等?

我想在电子表格中做什么,如果我选择年龄组的下拉列表并选择4-12,那么我希望每个人都在4-12岁的年龄段(以及那些年龄在以前的 )被选中..现在如果我选择4-12,那么只有4-12岁的人才能上市..

想法?

(注意:请记住,我希望年龄组等于或大于... 而不是另一种方式..即如果年龄组18+被选中,我不希望任何年龄小于18将包含)

enter image description here

更新

这里是spreadsheet

更新2的可编辑副本(我试过)

我能够为单个值做到这一点:即告诉我,属于heba_immediate_family表中特定单元格的人是否属于等于或大于所选内容的年龄段组,通过运行此操作:

=match(vlookup(C23, 'age range'!$A1:$B4, 2), {vlookup(heba_immediate_family!D2,'age range'!$A1:$B4,2)},1)

但我不知道如何扩大这包括整个表,即这个公式:

=ARRAYFORMULA(match(vlookup(C24, 'age range'!$A1:$B4, 2),vlookup(heba_immediate_family!D2:D19,'age range'!$A1:$B4,2),1)) 返回该错误

Did not find value '0' in MATCH evaluation.

想法?

回答

0

@abbood:处理这个问题的最简单方法是为每个人口统计桶创建一个索引(即4-12)。分配每个最大值(即4-12将是12,因为话务员的最大年龄是12)。假设没有差距,那么您可以使用此索引值进行过滤。您可以使用INDEX(MATCH())或VLOOKUP()与QUERY()或SUMIF()一起使用索引表来聚合或过滤表。

+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

+0

因此,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)) –

1

在第二次更新中使用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))