我有一个Excel VBA功能。在循环中,我使用Cells(x,y).Value
返回某些单元格的值。但是有时返回的是空的,即使单元格也不是空的。
工作表中的一个示例是Cells(11,4).Value
。因此,我将Cells(11,4)
和Cells(11,4).Value
都放在了手表中。
在“手表”中,向下钻取Cells(11,4)
会显示文本为“ 42.71%”,而 Value2 为“ 0.42708218178176”期待。
而且在手表中,Cells(11,4).Value
仍显示“空”。
更令人费解的是,如果我删除另一只手表,那么Cells(11,4).Value
将会突然被填充!
显而易见的问题是:
Cells(11,4).Value
返回空?编辑后添加: VBA冗长且无关紧要(即,如果将其剥离回一行,则会得到相同的结果)。
最相关的是单元格D11(我感兴趣的单元格)中包含的公式。是这样的:
= {(((D8+D9)/D5)^(1/(DATEDIF(D3,IF(D6>0,D6,LOOKUP(2,1/(D18:D9998<>""),$B18:$B9998)),"d")/365.25))-1)
该IF
函数返回两个可能的值:D6
或LOOKUP(2,1/(D18:D9998<>""),$B18:$B9998)
。 (后者旨在从B列获取D列中的最后一个值。)
如果我在D6
中放入一个值(因此IF
语句不执行LOOKUP),则Cells.Value
返回正确的结果。如果D6
中没有值,并且IF
语句返回LOOKUP
公式,那么Cells.Value
将返回Empty
。
答案 0 :(得分:0)
我已经回答了第二个问题,“如何停止Cells(11,4).Value返回空?”。
如果我改变
LOOKUP(2,1/(D18:D9998<>""),$B18:$B9998)
到
LOOKUP(2,1/(D18:D999<>""),$B18:$B999)
然后问题解决了。 (顺便说一下,在1000-10000行中没有数据。我只是输入了很大的数字,以确保该公式将来仍可使用。)
我还没有回答我的第一个问题:“为什么?”。虫子?局限性?还有吗?