2013-06-19 3 views
0

'Я использую эту формулу на листе Excel в ячейке A6. Он работает нормально.Как преобразовать формулу Excel в код VBA?

= IF (O6 = «Рука», «Ручной ввод», IF (O6 = «JET», R6, IF (O6 = «COKE», «Red Bull», IF (O6 = «Freight», Логистика », IF (O6 =« НАЛОГ »,« Налоговый », IF (O6 =« ПЕРЕНОСНАЯ СТОИМОСТЬ »,« Транзакционные транзакции », IFERROR (IF (FIND (« INV # », R6,1)> = 1, MID (R6, FIND («INV #», R6,1), 10), «»), «»)))))))

Теперь, мой вопрос: как мне преобразовать это в VBA? Я попытался записать его, и код выглядит следующим образом:

ActiveCell.FormulaR1C1 = _ "= IF (RC [14] =" "Ручной" "," "ручной ввод JE" ", IF (RC [ 14] = "" JET "", RC [17], IF (RC [14] = "" COKE "", "Red Bull" ", IF (RC [14] =" "FREIGHT" "," Логистика «», IF (RC [14] = «« НАЛОГ »,« НАЛОГ », IF (RC [14] =« «СТОИМОСТЬ ПЕРЕДАЧИ», «« Транзакционные транзакции »», IFERROR (IF (FIND ("" INV # "", RC [17], 1)> = 1, MID (RC [17], FIND ("" INV # "", RC [17] "& _ " "" ""), "" ")))))))"

Когда я запустил это, я получаю ошибку времени выполнения 1004: Определенная пользователем или объектная ошибка. Итак, я изменил это на что-то вроде этого, это делает то же самое, что и выше формулы, кроме опции поиска, все работает нормально. ! [V BA For Above formula] [Любая помощь по поиску?] End sub.Как я могу получить прекрасный вариант в вышеуказанном коде VBA.`

ответ

0

Вам нужно избегать ваших котировок.

ActiveCell.Formula = "=IF(O6=""Hand"",""Manual Entry"",IF(O6=""JET"",R6,IF(O6=""COKE"",""Red Bull"",IF(O6=""Freight"",""Logistics"",IF(O6=""TAX"",""Tax"",IF(O6=""TRANSFER COST"",""Transfer Cost Transactions"",IFERROR(IF(FIND(""INV#"",R6,1)>=1,MID(R6,FIND(""INV#"",R6,1),10),""""),"""")))))))" 

И использовать .Formula поскольку вы используете конкретные имена ячеек, которые не являются по отношению к выбранной ячейке.

+0

Все еще время выполнения Ошибка выше. Поэтому мне пришлось перейти на какой-то способ, как –

1

Это работает для меня:

Range("L6").Formula = "=IF(O6=""Hand"",""Manual Entry"",IF(O6=""JET"",R6,IF(O6=""COKE"",""Red Bull"",IF(O6=""Freight"",""Logistics"",IF(O6=""TAX"",""Tax"",IF(O6=""TRANSFER COST"",""Transfer Cost Transactions"",IFERROR(IF(FIND(""INV#"",R6,1)>=1,MID(R6,FIND(""INV#"",R6,1),10),""""),"""")))))))" 

Это только ваша оригинальная формула Excel, но с " символы экранированы, как "".

Смежные вопросы