出于娱乐目的,我试图使工作中的项目自动化,以了解有关excel vba的更多信息。对于数据的主选项卡,我具有导入功能,该功能从另一张工作表中将相关列拖动到A到J列。此后,已经设置了许多列来处理要导入的数据。
如果相关公司已成为客户20年以上,则计算列之一应返回基本0/1标志。但是,它最终是非常慢的UDF,因此我将其包装在If语句中,首先检查是否有其他标志为假,因此如果已经消除了声明,则可以跳过慢速计算。在我重新调整导入宏之前,它运行良好。这是函数:
=IF( Q2*O2*N2 = 0, 0, IF(CompanyYears(J2, End_of_Claim_Period, Analysis_Width) >= Valid_Co_Years, 1, 0))
因此,现在在数据导入之后,该列给出的仅有两个结果是0和#VALUE!。但是,“评估职能”逐步使我更加困惑。事实证明,对于每个值错误,Q / O / N列中的3个标志均为1。因此,首先求值并查找并乘以这3个标志,得出1 = 0-> FALSE。接下来要做的是解决命名范围End_of_Claim_Period指向的内容。成功将其更改为单元地址后,外部IF语句的value_if_true同时从0更改为#N / A。内部if语句可以继续执行,直到结果为0或1,最后是该语句
=IF(FALSE, #N/A, 1)
或
=IF(FALSE, #N/A, 0)
获得评估为#VALUE!。
此外,如果我尝试过滤该列以仅查看具有#VALUE的行!响应,它将正确地将它们重新评估为适当的0/1值。我尝试过使用vba代码过滤器,然后自动取消过滤该行,但这仍然将错误留在原处。
更新:在做其他事情时,我在这里遇到了一个类似的问题:
Excel is not updating cells, options > formula > workbook calculation set to automatic
我在宏的末尾添加了Application.CalculateFull,尽管有明显的性能下降,但从技术上解决了我的问题。