Как я могу ввести значение формулы в ячейку в VBA? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть следующий код:

LastRowColumnA = Cells(Rows.Count, 4).End(xlUp).Row

Range("J2:J" & LastRowColumnA).Value = "=IF(ISBLANK(G2), "" "", MIN(G2,I2,H2+90))"

Ячейки в G, H, и я все предстоящие сроки для различных категорий. Я пытаюсь показать наиболее приближенную дату в ячейках столбца J.

Формула правильно введена в ячейки столбца J; Тем не менее, я хотел бы, чтобы столбцы в J имели действительное значение вместо формулы в ячейке.

Чтобы уточнить:

1) Как я уже понял, ячейки в столбце J имеют это значение ячейки в электронной таблице: =IF(ISBLANK(G2), "", MIN(G2,I2,H2+90))

2) I хотел бы, чтобы ячейки в столбце J имели это значение ячейки в электронной таблице:

9/3/2020 (пример самой предстоящей даты.)

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020
LastRowColumnA = Cells(Rows.Count, 4).End(xlUp).Row

With Range("J2:J" & LastRowColumnA)
    .Formula = "=IF(ISBLANK(G2),"" "", MIN(G2,I2,H2+90))"
    .Formula = .Value
    .NumberFormat = "d/m/yyyy"
End With

With Range("J2:J" & LastRowColumnA) ... End With просто скажите VBA, что все наши .<something> будут относиться к нашему диапазону Range("J2:J" & LastRowColumnA), не записывая его каждый раз.

.Formula = "=IF(ISBLANK(G2),"" "", MIN(G2,I2,H2+90))" установите вашу формулу для ячеек в диапазон, как вы сделали самостоятельно, но лучше указать VBA, что мы устанавливаем формулу, а не значение.

.Formula = .Value do 'Copy & PasteByValue'

.NumberFormat = "d/m/yyyy" указывает Excel отображать эти ячейки в виде даты в формате день / месяц / год без добавления начальных нулей к полям дня и месяца.

0 голосов
/ 25 апреля 2020

Попробуйте:

Range("J2:J" & LastRowColumnA).Value = Evaluate("IF(ISBLANK(G2), "" "", MIN(G2,I2,H2+90))")

РЕДАКТИРОВАТЬ # 1:

Учитывая тот факт, что формула должна корректироваться вниз, попробуйте:

With Range("J2:J" & LastRowColumnA)
    .Value = "=IF(ISBLANK(G2), "" "", MIN(G2,I2,H2+90))"
    .Value = .Value
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...