У меня есть формула, которую я хочу создать в VBA и поместить в ячейку. Окончательная формула:

=IF(ISNA(MATCH(B6670,ProcMIRs!B1:B235,0)),"","Found in ProcMIRs row " & MATCH(B6670,ProcMIRs!B1:B235,0))

и когда я набираю это в ячейку, он работает нормально, возвращая сообщение или ничего.

В VBA у меня есть:

rToMIRs.Offset(0, 18).Formula = "=IF(ISNA(MATCH(RC[-17],ProcMIRs!B1:B" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & ",0)),"""",""Found in ProcMIRs row "" & MATCH(RC[-17],ProcMIRs!B1:B" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & ",0))"

Когда я выскакиваю строку в ближайшем окне, это именно то, что я хочу, но когда я назначаю ее на лист, я получаю:

=IF(ISNA(MATCH(B6673,ProcMIRs!'B1':'B235',0)),"","Found in ProcMIRs row " & MATCH(B6673,ProcMIRs!'B1':'B235',0))

Так что, черт возьми, вставляет одинарные кавычки вокруг диапазона B1:B235 на листе ProcMIR? Если я удаляю их в ячейке, формула, конечно, работает нормально. Последние 30 минут я потратил на попытки, такие как присвоение сначала строковой переменной и т.д., Но безуспешно.

Любые идеи были бы хорошы.

1 ответ1

2

Ваша формула противоречива, вы используете разметку R1C1 в одном месте, а затем переключаетесь на A1 в другом. Выберите один и придерживайтесь его.

rToMIRs.Offset(0, 18).FormulaR1C1 = _ 
 "=IF(ISNA(MATCH(RC[-17],ProcMIRs!R1C2:R" & Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & _
 "C2,0)),"""",""Found in ProcMIRs row "" & MATCH(RC[-17],ProcMIRs!R1C2:R" & _
 Sheets("ProcMIRs").Range("B1048576").End(xlUp).Row & "C2,0))"

(Непроверенный, у меня нет Excel передо мной, извините.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .