创建新工作表时Excel计算错误

时间:2013-07-03 15:37:29

标签: excel excel-vba excel-formula worksheet-function vba

我在Excel中的应用程序说明:

  1. 我将数据导入名为RAWDATA

  2. 的工作表
  3. 另一个现有的工作表Table1将由包含对RAWDATA的引用的单元格中的数据进行填充。

  4. 引用=RAWDATA!$A$1位于Table1的其中一个单元格中。

  5. 运行应用程序时,前面提到的单元格返回#REF!

  6. 我尝试更新计算,使用应用程序计算手册进行操作。我仍然得到#REF!

  7. 我点击#REF!单元格的公式栏。按enter键。它会正确计算。

  8. 我该怎么做才能解决这个问题?

    请注意,我只能使用工作表函数来获取表的值,而不是VBA代码。

1 个答案:

答案 0 :(得分:0)

可以假设一种可以解释这种行为的理论。但是,我想听听专家对此事的看法。

问题简述:

  • =RAWDATA!$A$1返回#REF!错误。
  • #REF!错误不会因重新计算而消失,但它会消失:

    1. 使用INDIRECT("=RAWDATA!$A$1")代替=RAWDATA!$A$1
    2. 点击#REF!单元格的公式栏,然后按Enter键。

我相信excel无法识别您从其他应用程序导入的数据类型。因此,对此数据的引用会导致#REF!错误。

你能检查一下这个说法是否属实? 如果它是假的,它会使下面写的任何内容无效。

Excel具有内置的自动转换机制。例如,如果一个单元格被格式化为文本但看起来像一个数字(比如“10”),那么向其添加数值是合法的,因为excel在内部将该文本转换为数字。

出于某种原因,当您重新计算工作表时,excel的自动转换工具不起作用,但是当您激活参考单元格并按Enter键时它会起作用(所以当重新计算单元格时) 。此外,它由INDIRECT触发。

所以我倾向于认为推断单元格值类型的机制是由INDIRECT和按公式栏中的Enter键引起的,而不是通过重新计算表单。

PS:INDIRECT是一个易变函数(每次excel重新计算时都会重新评估),但由于重新计算首先不起作用,这可能无关紧要。