![更改为数组公式时 Excel 返回 #VALUE!错误](https://linux22.com/image/1517624/%E6%9B%B4%E6%94%B9%E4%B8%BA%E6%95%B0%E7%BB%84%E5%85%AC%E5%BC%8F%E6%97%B6%20Excel%20%E8%BF%94%E5%9B%9E%20%23VALUE%EF%BC%81%E9%94%99%E8%AF%AF.png)
我将四个子公式连接成一个更大的公式:
=(IF(INDIRECT("Lawmakers2017!F"&ROW())=0,(IFERROR(IF(FIND(".",INDIRECT("Lawmakers2017!D"&ROW()))=2,INDIRECT("Lawmakers2017!E"&ROW()),INDIRECT("Lawmakers2017!D"&ROW())),INDIRECT("Lawmakers2017!D"&ROW()))),INDIRECT("Lawmakers2017!F"&ROW()))&" "&INDIRECT("Lawmakers2017!H"&ROW())&" "&INDIRECT("Lawmakers2017!I"&ROW())&" ("&INDIRECT("Lawmakers2017!BH"&ROW())&")")
公式工作正常,但是当我点击++Ctrl作为数组运行时,出现了无法解释的错误。ShiftEnter#VALUE!
当我将公式分解为多个连接在一起的单个公式时,即使我将其转换为数组公式,每个公式也能正常返回其值。
到目前为止,我已经能够将错误追溯到第一个子公式:
=(IF(INDIRECT("Lawmakers2017!F"&ROW())=0,(IFERROR(IF(FIND(".",INDIRECT("Lawmakers2017!D"&ROW()))=2,INDIRECT("Lawmakers2017!E"&ROW()),INDIRECT("Lawmakers2017!D"&ROW())),INDIRECT("Lawmakers2017!D"&ROW()))),INDIRECT("Lawmakers2017!F"&ROW())))
[value_if_true]
和 都可以[value_if_false]
毫无问题地转换为数组公式,但是当我将它们用作 IF 语句中的条件时,我无法将该 IF 语句转换为数组。即使我将它们删除并简单地使用 1 和 0 a,我仍然会得到#VALUE!
。
任何想法如何解决这一问题?
答案1
我遇到了同样的问题。语句中的“Row()”公式似乎导致“#VALUE!”错误,因为“IF()”语句中的数组公式。在评估“ROW()”后,行号会自动被“{}”包围,并延续到“INDIRECT(...)”公式中,这似乎并不喜欢。
我找到了一种解决此问题的方法,即用对具有我需要的行号的单元格的引用替换原始公式中的“ROW()”语句。例如,您的公式可以更新为:
=(IF(INDIRECT("Lawmakers2017!F"&A1)=0,(IFERROR(IF(FIND(".",INDIRECT("Lawmakers2017!D"&A1))=2,INDIRECT("Lawmakers2017!E"&A1),INDIRECT("Lawmakers2017!D"&A1)),INDIRECT("Lawmakers2017!D"&A1))),INDIRECT("Lawmakers2017!F"&A1)))
... 其中单元格 A1 包含所需的行号。您可以将“ROW()”公式放在与原始公式同一行的相邻列中并引用它。