У меня есть функция Excel VBA.В цикле я использую Cells(x,y).Value
для возврата значения определенных ячеек.Но иногда это возвращает пустое значение, даже если ячейка не пуста.
Один из примеров на моем листе - Cells(11,4).Value
.Поэтому я поместил в часы Cells(11,4)
и Cells(11,4).Value
.
В часах, при детализации в Cells(11,4)
показывается Текст , равный 42,71%, и Значение2 должно быть "0,42708218178176", что я и ожидал.
Но и в часах Cells(11,4).Value
по-прежнему показывает "Пусто".
Добавление к тайне, если я удаляю другуюсмотрите, тогда Cells(11,4).Value
внезапно теперь будет заполнено!
![enter image description here](https://i.stack.imgur.com/vbfEI.gif)
Очевидные вопросы:
- Почему?
- Что я могу сделать, чтобы остановить
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
.