Кавычки для ссылки на строку и ячейку

Мне нужно преобразовать формулу Excel в коды VBA, однако я пытался много раз, но безуспешно. Ниже приведена формула, которую мне нужно преобразовать.

=IF(G7959<0, "Delivered to end customer " & E7959, "To be delivered to end customer " & E7959)

Ниже показано, что я пробовал, но безуспешно: параметр IC_inventory_new_row представляет переменный индекс строки. Может кто поможет посмотреть и посоветовать?

IC_inventory_WS.Cells(IC_inventory_new_row, 15).Formula = "=IF(G" & IC_inventory_new_row + 1 & "<0, " & "Delivered to end customer" & "E" & IC_inventory_new_row & "," & "To be delivered to end customer " & "E" & IC_inventory_new_row & ")"

person Nicholas Kan    schedule 10.07.2020    source источник
comment
Лучше всего использовать Debug.Print и проверить конкатенацию формулы. Вы начнете замечать, что для реализации строковых значений вам нужно удвоить/утроить кавычки. Кстати, для этого вам не нужно отделять запятую от остальной части строки.   -  person JvdV    schedule 10.07.2020


Ответы (1)


Попробуйте, пожалуйста:

IC_inventory_WS.Cells(IC_inventory_new_row, 15).formula = "=IF(G" & IC_inventory_new_row + 1 & _
            "<0, ""Delivered to end customer ""&E" & IC_inventory_new_row & _
            ", ""To be delivered to end customer ""&E" & IC_inventory_new_row & ")"

Но это можно написать так, чтобы не нуждаться в итерации. Я имею в виду, чтобы бросить его во всем диапазоне сразу. Попробуйте этот способ, который должен делать то, что вам нужно, если я правильно понял, что нужно:

IC_inventory_WS.Range("O2:O" & lastRow).formula = "=IF(" & Range("G2").address(0, 0) & _
            "<0, ""Delivered to end customer ""&" & Range("E2").address(0, 0) & _
            ", ""To be delivered to end customer ""&" & Range("E2").address(0, 0) & ")"

Если нет, укажите, что это делает против того, что вам действительно нужно.

person FaneDuru    schedule 10.07.2020
comment
Спасибо, Фейн, твой ответ помог! однако, не могли бы вы также помочь преобразовать приведенную ниже формулу в VBA? =ЕСЛИ(ISNUMBER(ПОИСК(Подлежит доставке,O7962)),,Завершено) - person Nicholas Kan; 13.07.2020
comment
Я сейчас за рулем. Я постараюсь помочь, когда буду дома. - person FaneDuru; 13.07.2020
comment
Спасибо, и в этом случае «IC_inventory_new_row» представляет переменный индекс строки. - person Nicholas Kan; 13.07.2020
comment
@Nicholas Kan: Я не уверен, что понимаю, что вы имеете в виду, когда говорите что-то о IC_inventory_new_row, которого нет в формуле ... Вы имеете в виду замену 7962 из O7962 на "O" & C_inventory_new_row? Если да, формула должна быть: "=IF(ISNUMBER(SEARCH(""To be delivered"",O" & C_inventory_new_row & ")),"""",""Completed"")" - person FaneDuru; 13.07.2020