Excel中的条件单元格命名

我想知道是否可以根据单元格值是否等于另一个表格中的单元格来命名单元格。

表格1:

图片

(C37:E41)的C列有部门名称,D列花了小时,E列花了美元。

表2:

图片

(H57:H62)具有表1中列出的5个最大支出,使用列H中的=LARGE(E:E, [1-5])函数以降序列出。我希望单元格位于列H(列G)在表2中显示来自C列的部门名称。

我试过=VLOOKUP但据我所知,数据必须直接留在被用作查找值的单元格的左侧 。 有些类似查询的其他postbuild议= INDEX,= INDIRECT和/或= MATCH,但是我没有任何运气设置一个工作函数。

唯一的办法,我设法得到这个工作(有点),是使用= IF(H58 = E41,C41)等,但我无法得到它引用整个表。

您的工作表变得越复杂,其中包含非相关信息(数字或其他)的孤立区域越多,则公式越复杂以隔离单元格范围以产生真实结果。

另一种引用“岛屿”信息的方法没有其他信息领域歪曲结果是使用结构化表格 。 通过允许将查找和单元格区域引用隔离到指定为属于表格的单元格,并放弃工作表上的所有其他单元格,这可以降低公式的复杂性。

更复杂的事情,你是基于一个大函数的结果查找。 在重复金额的情况下,您将要求第二,第三匹配部门,而不是简单地重复第一场比赛。 AGGREGATE¹函数在不需要全面的数组公式的情况下通过循环校准来产生这些结果是很好的。


标准工作表参考(xlA1)

排名前五的工作表参考

由于不可能在行40之上没有任何东西,因此列E中前5个最大值的所有计算和随后从列C和D中返回的查询将从行41开始(行40是部门/小时/成本表)。

我将假设在E列的最后一个成本之下没有数字。这意味着在成本底部也没有小计。 这是必要的,因为包含成本的单元格范围可以被称为:

 E41:INDEX(E:E, MATCH(1e99, E:E)) 

如果在列E中有一个不属于E部门成本的单个数字,那么E列的有效部门成本低于你的结果,那么任何正确的回报将是巧合而不是真实的。 如果是这种情况,则公式必须有额外的计算。

H58:J58中的公式是,

 =LARGE(E$41:INDEX(E:E, MATCH(1E+99,E:E )), ROW(1:1)) =INDEX(C$41:INDEX(C:C, MATCH(1E+99,$E:$E )), AGGREGATE(15, 6, (ROW(C$41:INDEX(C:C, MATCH(1E+99,$E:$E )))-ROW(C$40))/($E$41:INDEX($E:$E, MATCH(1E+99,$E:$E ))=$H58), COUNTIF($H$58:$H58, $H58))) =INDEX(D$41:INDEX(D:D, MATCH(1E+99,$E:$E )), AGGREGATE(15, 6, (ROW(D$41:INDEX(D:D, MATCH(1E+99,$E:$E )))-ROW(D$40))/($E$41:INDEX($E:$E, MATCH(1E+99,$E:$E ))=$H58), COUNTIF($H$58:$H58, $H58))) 

根据需要填写。


结构化表引用(xlA1)

排名前5的表格参考

在上面的示例图像中,创build了一个表格(插入►表格►表格)并命名(上下文菜单表格工具►devise►属性►表格名称) TableDHCTotal行已被添加,只是为了certificate它不会干扰结果。

现在H58:J58中的公式,

 =LARGE(TableDHC[Cost], ROW(1:1)) =INDEX(TableDHC[Dept], AGGREGATE(15, 6, (ROW(TableDHC[Dept])-ROW(TableDHC[#Headers]))/(TableDHC[Cost]=$H58), COUNTIF($H$58:$H58, $H58))) =INDEX(TableDHC[Hours], AGGREGATE(15, 6, (ROW(TableDHC[Hours])-ROW(TableDHC[#Headers]))/(TableDHC[Cost]=$H58), COUNTIF($H$58:$H58, $H58))) 

根据需要填写。


结构化表格引用是否帮助您简化stream程严格取决于用户。 如果你知道两种方法,你可以做出select。 如果E59以下的数字将要求更复杂的工作表式公式,我可能会去结构化的表格路线。


¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。