【问题标题】:Dynamic Table: INDIRECT and INDEX to compare cell content in array formula动态表:INDIRECT 和 INDEX 比较数组公式中的单元格内容
【发布时间】:2017-11-07 14:12:53
【问题描述】:

概述:我正在尝试将 INDIRECT 与 INDEX、ROW 和 COLUMN 结合使用来使动态表正常工作。

问题

  1. 对于 Worksheet1 中给定列的每个单元格,读取其左侧单元格的内容。
  2. 将 Worksheet2 中的一列内容与读取的内容进行比较。
  3. 对于每个匹配项,从 Worksheet2 中获取一个变量的值。
  4. 评估找到值的最大值,将其复制到 Worksheet1 原始单元格中。

我是怎么做的(显然错了)

{=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101))}

我希望它做什么:

  1. INDIRECT(ADDRESS(ROW();COLUMN()-1;4)) --- 读取工作表 1 左侧单元格的内容

  2. 'Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)) --- 获取一个 TRUE/FALSE 值的数组,其中 TRUE 是在 Worksheet 2 列 A 包含的值之前找到的l

  3. IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101) --- 对于每个 TRUE,从 Worksheet 2 的 COLUMN D 中提取相应的值

  4. {=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(ROW();COLUMN()-1;4)); 'Worksheet 2'!$D$4:$D$101))} --- 从 COLUMN D 提取的值中,取 MAX

我得到了什么:#VALUE!错误。

有人可以解释一下原因并提出可行的替代方案吗?

【问题讨论】:

  • 公式的编写方式,看起来INDIRECT 有第二个参数'Worksheet 2'!$D$4:$D$101。这是一个错误吗?您的公式中可能缺少右括号。
  • @ImaginaryHuman072889 - 括号在翻译中丢失了,我刚刚更正了 - 不幸的是这不是问题,但感谢让我注意到

标签: excel excel-formula array-formulas excel-indirect


【解决方案1】:

这是因为您的 INDIRECT 单元格引用是数组公式的一部分,因此您会得到 {"A1"} 而不是 "A1"

这可以通过使用MAX来解决,例如:

{=MAX(IF('Worksheet 2'!$A$4:$A$101=MAX(INDIRECT(ADDRESS(ROW();COLUMN()-1;4))); 'Worksheet 2'!$D$4:$D$101))}

(看起来你也有几个括号不合适。)

更新:

这是一个更好的版本,适用于您的文本列(在 ROWCOLUMN 函数上使用 MAX):

=MAX(IF('Worksheet 2'!$A$4:$A$101=INDIRECT(ADDRESS(MAX(ROW());MAX(COLUMN())-1;4)); 'Worksheet 2'!$D$4:$D$101))

【讨论】:

  • 我的 INDIRECT 指向的单元格将包含文本而不是数字。有解决方法吗?使用 MAX 总是给我 0 作为返回值。
  • 我让它与 INDEX 一起使用来访问值!谢谢,这就像一个魅力,让我了解数组公式的行为方式(:
  • 酷!无论如何,我已经用更好的版本更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2013-02-28
  • 2021-11-07
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2019-11-26
相关资源
最近更新 更多