Как автоматически заполнить логические формулы для определенной ячейки с помощью VBA? - PullRequest
0 голосов
/ 10 июля 2019

Два вопроса: 1) Могу ли я автоматически заполнять логические формулы в ячейке с помощью VBA и как (что-то не так с моим кодом) и 2) Можно ли автозаполнить его только при вводе данных и как?

Формула, которую я хочу поместить, работает, когда я помещаю в ячейку, но не VBA:

=IF(ISNUMBER(SEARCH("$",$A2)),"Scanner 2",IF(ISNUMBER(SEARCH("#",$A2)),"Scanner 1","Error"))

Для VBA, я также использовал Относительные координаты, не работает:

Range("C2").Value="=IF(ISNUMBER(SEARCH('$',RC[-2])),'Scanner 2', IF(ISNUMBER(SEARCH('#',RC[-2])),'Scanner 1','Error'))"

Изображения, которые могут помочь:

Picture of VBA and debug highlighted!

Picture of Spreadsheet

1 Ответ

1 голос
/ 10 июля 2019

Проблема заключается в комбинации использования одинарных кавычек + вы не добавили как . Formula:

Итак:

Range("C2").Formula = "=IF(ISNUMBER(SEARCH(""$"",$A2)),""Scanner 2"",IF(ISNUMBER(SEARCH(""#"",$A2)),""Scanner 1"",""Error""))"

Должно работать

Кроме того, я вижу в вашем коде, что вы используете .Select, есть много способов избежать этого.Проверьте эту ссылку.

В приведенном ниже примере будет сделано то же самое:

With ThisWorkbook.Sheets("Sheet1")
    .Range("C2:C100").Formula = "=IF(ISNUMBER(SEARCH(""$"",$A2)),""Scanner 2"",IF(ISNUMBER(SEARCH(""#"",$A2)),""Scanner 1"",""Error""))"
End With

Вы заметите, что Excel автоматически адаптирует формулу к правильным ссылкам на ячейки..

...