我想知道我是否可以根据它旁边的单元格值是否等于另一个表格中的单元格来命名单元格。
表1:
(C37:E41)C栏中有部门名称,D栏有小时,第E栏有花费。
表2:
(H57:H62)使用表H中的=LARGE(E:E, [1-5])
函数按降序列出表1中的5个最大支出。我希望表2中H列左侧的单元格(G列)从列C显示部门名称。
我已尝试=VLOOKUP
但据我所知,数据必须直接用作查找值的单元格。
有些类似查询的其他帖子建议= INDEX,= INDIRECT和/或= MATCH但我没有运气设置工作函数。
我设法让这个工作(某种程度)的唯一方法是使用= IF(H58 = E41,C41)等但我无法让它引用整个表格。
答案 0 :(得分:0)
随着包含非相关信息(数字或其他)的隔离区域的增加,工作表变得越复杂,公式越孤立以隔离单元格范围以产生真实结果。
在没有其他信息区域的情况下引用信息“孤岛”的另一种方法是使用structured tables。通过允许您将查找和单元格范围引用隔离到指定为属于表的单元格并丢弃工作表上的所有其他单元格,这可以降低公式的复杂性。
为了使问题更加复杂,您的查找基于LARGE function的结果。在重复金额的情况下,您将需要第2,第3匹配部门而不是简单地重复第1次匹配。 AGGREGATE¹ function可以很好地利用循环校准生成这些结果;而不需要完整的数组公式。
<强> Standard worksheet references (xlA1) 强>
由于第40行上面不存在任何内容,因此E列中前5个最大值的所有计算以及后续列C和D的查找将从第41行开始(第40行是部门的标题行) /小时/费用表)。
我将假设在E列的最后成本之下没有数字。这意味着成本底部没有小计。这是必要的,因为包含成本的单元格范围可以称为:
E41:INDEX(E:E, MATCH(1e99, 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)))
根据需要填写。
<强> Structured table references (xlA1) 强>
在上面的示例图像中,已创建表格(插入►表格►表格)并命名(上下文菜单表格工具►设计►属性►表格名称) TableDHC 。添加总行只是为了证明它不会干扰结果。
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)))
根据需要填写。
结构化表引用是否可以帮助您简化流程,这完全取决于用户。如果您了解这两种方法,则可以做出选择。如果E59以下的数字需要更复杂的工作表式公式,我可能会选择结构化表格。
¹ Excel 2010引入了AGGREGATE function。早期版本不提供。