如何在 Excel 数组公式中使用 INDIRECT?
How do I use INDIRECT inside an Excel array formula?
情况
- 在 sheet“计划”中,我有一个区域包含相邻单元格中的会话(字符串)和小时(数字)对(例如 D11 和 E11、I12 和 J12 等)一个会话可以发生多次。
- D11:E11 是 |富 | 8 |
- I12:J12 是 |富 | 4 |
- 在另一个 sheet 中,我想在 Planning sheet 和 return 中找到一个数组,其中包含在该会话中预订的所有小时数(以计算总数)
- 我使用带条件的数组公式,并打算使用 SMALL 函数从数组中检索结果
问题
以下公式 return 是对在“Foo”上预订的小时数的所有正确引用,到目前为止一切正常。
=IF(Planning!$D:$CV="Foo";ADDRESS(ROW(Planning!$D:$CV);COLUMN(Planning!$D:$CV)+1;;;"Planning"))
{"Planning!$E"\FALSE\FALSE\FALSE\FALSE\"Planning!$J"}
但是,如果我使用 INDIRECT 函数检索这些引用的值,它们总是 return 数组中第一个引用的值(“Planning!$E$11”)
=IF(Planning!$D:$CV="Foo";INDIRECT(ADDRESS(ROW(Planning!$D:$CV);COLUMN(Planning!$D:$CV)+1;;;"Planning")))
{8\FALSE\FALSE\FALSE\FALSE}
如何检索正确的值?或者我应该以完全不同的方式解决这个问题?
截图
- The planning sheet
- The overview I want
由于我主要对计划的总小时数感兴趣,所以最终使用了以下公式:
=SUM(SUM(INDIRECT(IF(Planning!$D:$CV="Foo";(ADDRESS(ROW(Planning!$D:$CV);COLUMN(Planning!$D:$CV)+1;;;"Planning"));"$U"))))
- IF:如果找到字符串,则创建包含对 Planning sheet 的引用的数组。如果找不到,请添加参考 $U$19.
- 使用 INDIRECT,将所有引用替换为规划 sheet 中的值。 $U$19 包含值 0.
- 然后使用 SUM 两次求和所有值。我不知道为什么,但看到
- Is it possible to have array as an argument to INDIRECT(), so INDIRECT() returns array?
- https://superuser.com/questions/1196243/simplify-a-sum-of-indirect-cell-values
情况
- 在 sheet“计划”中,我有一个区域包含相邻单元格中的会话(字符串)和小时(数字)对(例如 D11 和 E11、I12 和 J12 等)一个会话可以发生多次。
- D11:E11 是 |富 | 8 |
- I12:J12 是 |富 | 4 |
- 在另一个 sheet 中,我想在 Planning sheet 和 return 中找到一个数组,其中包含在该会话中预订的所有小时数(以计算总数)
- 我使用带条件的数组公式,并打算使用 SMALL 函数从数组中检索结果
问题
以下公式 return 是对在“Foo”上预订的小时数的所有正确引用,到目前为止一切正常。
=IF(Planning!$D:$CV="Foo";ADDRESS(ROW(Planning!$D:$CV);COLUMN(Planning!$D:$CV)+1;;;"Planning"))
{"Planning!$E"\FALSE\FALSE\FALSE\FALSE\"Planning!$J"}
但是,如果我使用 INDIRECT 函数检索这些引用的值,它们总是 return 数组中第一个引用的值(“Planning!$E$11”)
=IF(Planning!$D:$CV="Foo";INDIRECT(ADDRESS(ROW(Planning!$D:$CV);COLUMN(Planning!$D:$CV)+1;;;"Planning")))
{8\FALSE\FALSE\FALSE\FALSE}
如何检索正确的值?或者我应该以完全不同的方式解决这个问题?
截图
- The planning sheet
- The overview I want
由于我主要对计划的总小时数感兴趣,所以最终使用了以下公式:
=SUM(SUM(INDIRECT(IF(Planning!$D:$CV="Foo";(ADDRESS(ROW(Planning!$D:$CV);COLUMN(Planning!$D:$CV)+1;;;"Planning"));"$U"))))
- IF:如果找到字符串,则创建包含对 Planning sheet 的引用的数组。如果找不到,请添加参考 $U$19.
- 使用 INDIRECT,将所有引用替换为规划 sheet 中的值。 $U$19 包含值 0.
- 然后使用 SUM 两次求和所有值。我不知道为什么,但看到
- Is it possible to have array as an argument to INDIRECT(), so INDIRECT() returns array?
- https://superuser.com/questions/1196243/simplify-a-sum-of-indirect-cell-values