自定义函数可能无法计算正确的值 |
您所在的位置:网站首页 › excel表计算显示错误 › 自定义函数可能无法计算正确的值 |
自定义函数可能无法计算 Excel 中的预期值
项目
04/13/2023
适用于:
Microsoft Excel
症状
计算工作表时,某些单元格似乎计算错误的值。 原因如果存在以下情况,则会发生这种问题: 工作表上的单元格包含自定义函数。 自定义函数包含一个或多个引用工作表上的单元格区域的参数。 自定义函数的结果依赖于比直接引用更多的单元格。 此行为由 Microsoft Excel 设计。 当 Excel 计算包含自定义函数的单元格时,它会重新计算作为自定义函数的参数传递的所有单元格范围。 如果函数的结果取决于函数未显式引用的单元格,则可能不会重新计算这些单元格。 解决方法若要解决此问题,请使用以下任一方法。 方法 1:修改函数,以便传递所有相关的单元格范围修改函数以作为参数接受计算函数结果所需的所有单元格。 方法 2:使自定义函数易失性Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于适销性或对特定用途的适用性的默示担保。 本文假设您熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能,但他们不会修改这些示例,以提供额外的功能或构造过程来满足特定要求。如果使自定义函数易失性,则不会出现此问题。 若要使自定义函数易失性,请将以下代码行添加到函数。 Application.Volatile注意 如果使自定义函数易失性,则每次更改值或重新计算打开的工作簿时,它都会重新计算。 这可能会影响工作表模型的性能。 方法 3:强制 Excel 重新计算所有打开的工作簿按 CTRL+ALT+F9 重新计算所有打开的工作簿中的值。 在 Microsoft Office Excel 2007 中,按 CTRL+ALT+SHIFT+F9 重新计算所有打开的工作簿中的值。 更多信息 问题的示例若要说明此问题,请执行以下步骤: 关闭并保存任何打开的工作簿,然后打开新工作簿。 启动 Visual Basic 编辑器 (按 ALT+F11) 。 在“插入”菜单上,单击“模块”。 在模块工作表中键入下面的代码: ' This function counts the number of blank cells by starting from the cell ' referred to by the rngStartCell argument and moving up the column. Function FindTextUp(rngStartCell As Range) As Single Dim iIndex As Integer For iIndex = 0 To 100 If rngStartCell.Value "" Then FindTextUp = iIndex Exit Function Else Set rngStartCell = rngStartCell.Offset(-1, 0) End If Next iIndex End Function按 ALT+F11 返回到 Excel。 在单元格 A2 中键入测试,然后按 Enter。 在单元格 A10 中键入以下公式,然后按 ENTER: =FindTextUp(A9)公式返回值 7。 在单元格 A5 中键入另一个测试,然后按 ENTER。 当值为 4 时,公式仍返回值 7。 在此示例中,FindTextUp 函数显式引用单元格 A9。 但是,该函数可能依赖于单元格 A1:A8,具体取决于工作表中输入的数据。 如果在本文的“解决方法”部分中实现方法 1,则函数将计算预期结果。 以下代码行演示如何修改此示例中的函数,以便计算预期结果。 Function FindTextUp(rngStartCell As Range, rngOtherCells As Range) As Single现在,如果将步骤 7 中的函数调用替换为以下函数调用,则该函数将始终返回预期结果。 =FindTextUp(A9,A1:A8) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |