#excel #vba
#excel #vba
Вопрос:
Итак, я столкнулся с проблемой с моим скриптом, который заполняет формулу до последней строки столбца. Он работает по большей части, за исключением тех случаев, когда он входит в мою функцию if.
Sub vlookups()
'
' vlookups Macro
'
'
Dim LastRow As Long
LastRow = Range("A" amp; Rows.Count).End(xlUp).Row
Range("C2:C" amp; LastRow).Formula = "=VLOOKUP($A2,'Refined Raw'!$A:$AH,2,false)"
Range("E2:E" amp; LastRow).Formula = "=VLOOKUP($A2,'Refined Raw'!$A:$AH,3,false)"
Range("G2:G" amp; LastRow).Formula = "=VLOOKUP($A2,'Refined Raw'!$A:$AH,4,false)"
Range("I2:I" amp; LastRow).Formula = "=VLOOKUP($A2,'Refined Raw'!$A:$AH,5,false)"
Range("K2:K" amp; LastRow).Formula = "=IF(VLOOKUP($A2,'Refined Raw'!$A:$AH,6,false)=0,'',VLOOKUP($A2,'Refined Raw'!$A:$AH,6,false))"
End Sub
Это работает нормально для первых 4-х диапазонов vlookups, однако, когда он попадает в последний с помощью IF(VLOOKUP, он показывает ошибку. Я не слишком хорошо разбираюсь в VBA, поэтому не уверен, что может быть причиной этой проблемы.
Любая помощь?
Ответ №1:
Вам нужно удвоить кавычки внутри формулы:
"=IF(VLOOKUP($A2,'Refined Raw'!$A:$AH,6,false)=0,"""",VLOOKUP($A2,'Refined Raw'!$A:$AH,6,false))"
Комментарии:
1. это сработало, спасибо! любопытно, зачем ему понадобились двойные кавычки?
2. @DannyMoncadea — Обратите внимание , с чего вы начинаете
.Formula
"=IF(...
. Когда вы заключаете в одинарную кавычку, VBA интерпретирует это как конец инструкции. Удваивая кавычки, он разрешает это""
при вставке формулы. … если это имеет смысл.