Cells.Formula не работает с пустыми строками - PullRequest
0 голосов
/ 28 февраля 2020
Cells(j, LastColumn + 2).Select
Selection.Formula = "=IF(A5="""";IF(B5="""";0;Sheet1!D4);IF(""AssemblyTime""!B5=""X"";1;Sheet1!C4))"

Что я здесь не так делаю, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Вот анализ формулы, которую вы пытаетесь написать.

' = IF([Condition], [True], [False])
'       Condition = A5=""
'       True = IF(B5="""",0;Sheet1!D4),IF(""AssemblyTime""!B5=""X"";1;Sheet1!C4)
'              IF([Condition], [True], [False])
'                  Condition = B5=""
'                  True = Sheet1!D4)
'                  False = IF(""AssemblyTime""!B5=""X"",1;Sheet1!C4
'                  Syntax error: missing closing bracket
'                          IF([Condition], [True], [False])
'                              Condition = ""AssemblyTime""!B5="X"
'                                          Syntax error: Should be 'Assembly Time'
'                              True = 1
'                              False = Sheet1!C4
'       False = [missing]

Почему бы вам не написать формулу на рабочем листе, заставить ее работать там, а затем попросить синтаксис написать рабочую формулу по коду VB? На самом деле, если кто-то поможет вам с синтаксисом VB, вы получите только формулу, которая не работает.

При отсутствии результата False для базового оператора c IF, мне интересно, можете ли вы уменьшите этот уровень, объединив первые два Conditions, например IF(AND(A5="",B5=""),

0 голосов
/ 28 февраля 2020

Хорошо, поэтому я использовал макрос-рекордер, чтобы получить код:

Cells(j,LastColumn+2).FormulaR1C1="=IF(RC[-5]="""",IF(RC[-4]="""",0,Sheet1!R[-1]C[-2]),IF('Cockpit Assembly Time'!RC[-4]="""",Sheet1!R[-1]C[-3],1))"

Но это FormulaR1C1, я хочу использовать метод .Formula. Как я могу перевести это на .Formula?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...