Excel - 计算符合特定条件的特定范围内不同 sheet 中的项目数
Excel - Counting no of items in a different sheet between a certain range matching specific criteria
我一直在构建一个 excel sheet 来查询数据集并生成一组指标。我的目标是使流程尽可能可扩展。
链接中有一个简单的模拟数据集图片,用于说明我要实现的目标,它包含一个指标 sheet,我想在其中显示信息和数据集 sheet:
和
目的是让突出显示的单元格 (D6) 显示 "Sheet2" 中满足项目状态 "Open" 标准的项目数。
我一开始是用公式来解决这个问题的:
COUNTIFS(Sheet2!C:C,"Open")
然后使用以下方法使其更具可扩展性:
COUNTIFS(INDIRECT(" ' "&D4&" ' !C:C "),"=" &C8)
这意味着我可以使用一个单元格 (D4) 来引用我想要查找的 sheet 和一个单元格 (C8) 来引用我想要搜索的条件。在我需要查找数据集中的空白之前,这种方法运行良好,此时它会计算指定列中的所有空白(请参阅指标 sheet 中的单元格 D8)。
所以我想知道是否有一种巧妙的方法来指定要查看的列范围,例如 C1:C100,通过使用单元格来引用范围类似于使用单元格来引用 sheet ] 和标准。我可以使用下面的公式,但它仍然需要在公式评分器中写入 sheet 名称,而不是引用到单元格中。
COUNTIF((Sheet2!C1:INDIRECT(CONCATENATE("Sheet2!C", B2))),""&C8)
当我将此应用于我正在查看的数据集时,我将需要考虑多个 sheets,其中数据集将包含相同的标准(位于所有 [=54 的同一列中) =]s) 但数据集的长度会有所不同。这就是为什么我想将引用变量的单元格公式保留到指标 sheet 中的特定单元格,这样如果我添加一个新的数据集或我想查看的标准我没有重新输入大量公式,但只需将其复制即可。
更新
根据 JvdV 的回答,我已经能够将公式中的所有变量删除到指标 sheet 的单元格中(对我正在做的事情很有用,其他人可能也会感兴趣)。它本质上使用 'INDIRECT' 和 'CONCAT' 函数来构建所需的字符串,colour coded picture
您可以尝试满足您的需求:
我在 F1
中使用的公式将转换为:
=COUNTBLANK(INDIRECT(G1&"C1:C"&COUNTA(INDIRECT(G1&"A:A"))))
单元格 G1
只是一个列表,如:
如果您不想使用所有已使用的行,而是使用单元格中指定的范围 B2
那么我想它看起来像:
=COUNTBLANK(INDIRECT(G1&"C1:C"&B2))
当心;使用 INDIRECT()
会导致您的公式不稳定!
我一直在构建一个 excel sheet 来查询数据集并生成一组指标。我的目标是使流程尽可能可扩展。
链接中有一个简单的模拟数据集图片,用于说明我要实现的目标,它包含一个指标 sheet,我想在其中显示信息和数据集 sheet:
和
目的是让突出显示的单元格 (D6) 显示 "Sheet2" 中满足项目状态 "Open" 标准的项目数。
我一开始是用公式来解决这个问题的:
COUNTIFS(Sheet2!C:C,"Open")
然后使用以下方法使其更具可扩展性:
COUNTIFS(INDIRECT(" ' "&D4&" ' !C:C "),"=" &C8)
这意味着我可以使用一个单元格 (D4) 来引用我想要查找的 sheet 和一个单元格 (C8) 来引用我想要搜索的条件。在我需要查找数据集中的空白之前,这种方法运行良好,此时它会计算指定列中的所有空白(请参阅指标 sheet 中的单元格 D8)。
所以我想知道是否有一种巧妙的方法来指定要查看的列范围,例如 C1:C100,通过使用单元格来引用范围类似于使用单元格来引用 sheet ] 和标准。我可以使用下面的公式,但它仍然需要在公式评分器中写入 sheet 名称,而不是引用到单元格中。
COUNTIF((Sheet2!C1:INDIRECT(CONCATENATE("Sheet2!C", B2))),""&C8)
当我将此应用于我正在查看的数据集时,我将需要考虑多个 sheets,其中数据集将包含相同的标准(位于所有 [=54 的同一列中) =]s) 但数据集的长度会有所不同。这就是为什么我想将引用变量的单元格公式保留到指标 sheet 中的特定单元格,这样如果我添加一个新的数据集或我想查看的标准我没有重新输入大量公式,但只需将其复制即可。
更新
根据 JvdV 的回答,我已经能够将公式中的所有变量删除到指标 sheet 的单元格中(对我正在做的事情很有用,其他人可能也会感兴趣)。它本质上使用 'INDIRECT' 和 'CONCAT' 函数来构建所需的字符串,colour coded picture
您可以尝试满足您的需求:
我在 F1
中使用的公式将转换为:
=COUNTBLANK(INDIRECT(G1&"C1:C"&COUNTA(INDIRECT(G1&"A:A"))))
单元格 G1
只是一个列表,如:
如果您不想使用所有已使用的行,而是使用单元格中指定的范围 B2
那么我想它看起来像:
=COUNTBLANK(INDIRECT(G1&"C1:C"&B2))
当心;使用 INDIRECT()
会导致您的公式不稳定!