如何在Excel数组公式中使用INDIRECT?

时间:2018-08-08 09:45:58

标签: excel array-formulas excel-indirect

情况

  • 在“计划”工作表中,我有一个区域,其中包含相邻单元格(例如D11和E11,I12和J12等)中的会话(字符串)和小时(数字)对。一个会话可以多次发生。
    • D11:E11是|富| 8 |
    • I12:J12是|富| 4 |
  • 在另一个工作表中,我想在“计划”工作表中找到一个会话,并返回一个数组,其中包含该会话上预订的所有时间(以计算总时间)
  • 我使用带有条件的数组公式,并打算使用SMALL函数从数组中检索结果

问题

以下公式返回了到目前为止对“ Foo”上预订的小时数的所有正确引用。

  

= IF(规划中!$ D $ 11:$ CV $ 18 =“ Foo”;地址(ROW(规划中!$ D $ 11:$ CV $ 18); COLUMN(规划中!$ D $ 11:$ CV $ 18)+1; ;;“ Planning”))

{"Planning!$E$11"\FALSE\FALSE\FALSE\FALSE\"Planning!$J$12"}

但是,如果我使用INDIRECT函数检索那些引用的值,它们总是返回数组中第一个引用的值(“ Planning!$ E $ 11”)

  

= IF(Planning!$ D $ 11:$ CV $ 18 =“ Foo”; INDIRECT(ADDRESS(ROW(Planning!$ D $ 11:$ CV $ 18); COLUMN(Planning!$ D $ 11:$ CV $ 18)+) 1 ;;;“ Planning”)))

{8\FALSE\FALSE\FALSE\FALSE\8}

如何获取正确的值?还是应该以完全不同的方式解决问题?

屏幕截图

1 个答案:

答案 0 :(得分:0)

由于我主要对计划的总工作时间感兴趣,因此我最终使用以下公式:

  

= SUM(SUM(INDRECT(IF(Planning!$ D $ 11:$ CV $ 18 =“ Foo” ;; ADDRESS(ROW(Planning!$ D $ 11:$ CV $ 18); COLUMN(Planning!$ D $ 11: $ CV $ 18)+1 ;;;“ Planning”));“ $ U $ 19”))))

  1. IF:如果找到字符串,则使用对计划表的引用创建数组。如果找不到,请添加引用$ U $ 19。
  2. 使用INDIRECT,将所有引用替换为“计划”表中的值。 $ U $ 19包含值0。
  3. 然后使用SUM两次来汇总所有值。我不知道为什么,但是