我正在为客户开发 Excel 输入模板,最近他们将其发回,说它充满了 #VALUE! 错误。经过一番反复思考,我们发现我这边的公式如下所示:
=IF(AND(COUNTBLANK(INDIRECT("D" &ROW() & ":AT" &ROW()))<>$BA$1,INDIRECT("E" &ROW())=""),"name not entered","")
我们是这样开场的:
{=IF(AND(COUNTBLANK(INDIRECT("D" &ROW() & ":AT" &ROW()))<>$BA$1,INDIRECT("E" &ROW())=""),"name not entered","")}
我尝试用谷歌搜索修复方法,但结果总是返回如何使用数组公式。这可能是因为我不知道要使用什么搜索词。
我已经了解到@符号可以可以使用,但还不能正确弄清楚如何使用它。
顺便说一句,我使用Indirect(CollLetter & Row())
公式来引用非常具体的单元格,因为有很多用户在模板的数据输入部分进行剪切和粘贴以破坏现有的公式。
非常感谢您的任何建议。
删除了商业敏感信息的副本保存在此处: 强制数组公式,示例
导致问题的公式从 AD 列开始一直到 BR 列。保存此文件时,所有这些公式都显示为标准公式,但当我的客户端打开文档时,它们会转换为数组公式,结果为 #VALUE!。
我无法在我自己的电脑上重现该问题,因此对于其他人来说这可能也很好。
答案1
具有动态数组功能的 Excel(据我所知,仅限 Office 365)获得了 @ 运算符。它将函数或公式结果限制为一个值/一个单元格。如果公式未以 @ 开头,其他 Excel 版本将在各种情况下看到数组函数,这在大多数情况下是可以的,但有时会失败。
据我了解,将结果限制为一个只是作为整个公式的最后一步所必需的,因此您需要在外部 IF() 函数上使用 @ 运算符:
=@IF( ...
并且仅在那里。
答案2
雷杜特,谢谢您的回答。是的,这似乎是 Office 365 的一项“功能”,它有时(?!?)会自动将公式转换为数组或在公式前加上“@”。我还没有弄清楚什么时候和/或为什么,但是,在公式前加上“@”至少可以阻止它在早期版本中以数组的形式出现。烦人的是,自动数组功能仅在早期版本中以数组的形式出现(因此看起来像 Excel 365 中的直接公式),而实际数组在新旧版本中都以数组的形式出现(即“{=...}”),因此肯定是一个错误。