为SUMIF函数选择命名范围的特定列

时间:2016-11-24 21:20:56

标签: excel function offset sumifs

我正在尝试创建一个SUMIF函数,该函数可以在Excel工作表中的命名区域的特定列中动态添加值。

当没有命名范围时,这很容易做到:

enter image description here

该公式挑选出所有包含"伦敦"以他们的名义并总结与伦敦有关的费用。

我要做的是使用名为TripsData(A2:B5)的命名范围,并告诉SUMIF函数将此范围的第2列中的条目求和,以满足在其名称中使用London的条件。

如何在不需要为第2列创建第二个命名范围的情况下完成此工作,只需告诉Excel查看此命名范围的指定列?索引/匹配仅返回一个值,这样当名称中有多个以伦敦为单位的单元格时,它们不起作用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:14)

使用INDEX引用指定范围内的特定列(可以引用整列),如下所示

=SUMIF(TripsData,"*London*",INDEX(TripsData,,2))

答案 1 :(得分:4)

如果将数据转换为Excel表对象,则可以在没有任何命名范围的情况下执行此操作。选择范围或整个范围内的任何单元格,然后单击插入>表或按 Ctrl - T

会出现一个对话框,询问您的表格是否有标题。你的。现在,您可以通过其固有名称引用表及其列,并按照以下方式构建公式:

=SUMIF(Table1[Expense],"*London*",Table1[Cost])

enter image description here

当然,即使在公式到位后,您也可以重命名表格。单击表中的单元格时,将出现一个新的功能区,用于仅与表相关的命令。它是一个非常强大的工具。

适用于整个表列的任何公式,格式等都将自动转移到新的表行中。当然,表格列参考也会自动调整,因此您不必混淆动态范围名称或重新定义命名范围适用的内容。

注意:公式使用结构化引用而不是单元格地址。单击文件>可以关闭此选项。选项>配方>勾选或取消勾选"在公式"

中使用表名

答案 2 :(得分:1)

您可以将Chris的Index(Table1,,Col#)想法与命名范围“ Table1”一起使用(如果您出于某些原因不想创建Excel表对象,则可以这样),并且可以避免Applez在评论中提到的问题低于克里斯的想法。 Applez警告说,如果以后在命名范围内的该列之前插入另一列,则对列号引用使用常量是危险的。您会发现Excel不会自动增加常量,因此公式会中断。

Applez是正确的.....所以不要使用常量,而应使用常量的列号“引用” 代替。例如......

=SUMIF(TripsData,"*London*",INDEX(TripsData,,Column(B1)))

如果以后在A和B之间插入一列,Excel Will 会自动将引用Column(B1)递增到Column(C1)。只是不要删除B1Row 1,否则您将得到REF错误。我通常在Column引用内的该表列使用标题/瓦片“单元格”(在其中的任何行中)(因为极少有可能除非删除,否则我将永远不会删除该表列的标题/标题单元格整列)。在本示例中,B1“ IS”是数据表中该列的标题/标题单元格。这就是我用于示例的内容。