Мне нужно написать макрос.
У меня есть книга с ~ 30000 строк (ежедневно меняется).
Мне нужно найти выражение "ТОРГОВЛЯ" в строках в ячейках из столбца (A)
Если строка внутри ячейки содержит выражение TRADE, мне нужно изменить строку в соответствующей ячейке в столбце (B) (та же строка) на выражение "TRADEIN"
Если условие не выполняется, соответствующие ячейки из столбца (B) должны оставаться без изменений.
Чему я научился на данный момент:
Formula =IF(ISNUMBER(FIND("TRADE", A1 )), 1, 2)
соответственно изменяет значение соседней ячейки, ТОЛЬКО если помещается непосредственно в ячейку и копируется вниз в Excel.
Проблемы начинаются, когда я пытаюсь получить строку в качестве результата
Formula: =IF(ISNUMBER(FIND("TRADE", A1 )), "TRADEIN", "")
не работает -> ошибка
Formula: =IF(ISNUMBER(FIND("TRADE", A1 )), ""TRADEIN"", "")
не работает -> ошибка
Тогда любые попытки заставить мой макрос вставлять более сложные формулы в ячейки из VBA не увенчались успехом, т.е.:
Ниже работает нормально:
For i=1 to i=NumberOfRows
ActiveSheet.Cells(i, 2).Formula = "= 2+2"
next i
Ниже не будет работать (опять же, формула работает, если ее поместить непосредственно в ячейку):
For i=1 to i=NumberOfRows
ActiveSheet.Cells(i, 2).Formula = "=IF(ISNUMBER(FIND("TRADE", (i, 1)), 1, 2)"
next i
Я думаю, что нет смысла перечислять все мои неудачные попытки заставить его работать до сих пор (я полагаю, множество бесполезных строк для чтения), но во что бы то ни стало - поправьте меня, если я ошибаюсь.
Я не могу найти решение, столь же конкретное, как моя задача, и у меня есть проблемы с изменением некоторых найденных в Интернете, в то время как другие вообще не будут работать для меня. Возможно, я точно не знаю, как просить то, что мне нужно, наиболее эффективным способом. Будьте очень простыми и постарайтесь не пропустить никаких объявлений из предлагаемых модулей/подпрограмм, если сможете - я еще не уверен, когда дело доходит до использования и создания объектов и методов за пределами нескольких примеров, которым я следовал, или выбора/использования правильного тип переменных с совместимыми методами/функциями и т. д.
=IF(ISNUMBER(FIND(""TRADE"",A" & i & ",1,2)
. Обратите внимание на открытие и закрытие"
вокруг кавычек вTRADE
, чтобы VBA распознал, что вы хотите включить 's` в формулу, и как использовать&
для переноса переменных в строки. - person Scott Holtzman   schedule 11.01.2016