#excel #vba #excel-formula
#excel #vba #excel-формула
Вопрос:
Я хочу вставить следующую формулу в третий столбец моей таблицы Excel «Транзакции». Если я введу ее вручную, она сработает, но если я попытаюсь ввести ее с помощью подпрограммы, я получу ошибку 1004. Не уверен, как это решить. Вот фрагмент кода:
Sub test3()
Dim ws As Worksheet
Dim lo As ListObject
Dim lCol As ListColumn
Set ws = ThisWorkbook.Worksheets("Transactions")
Set lo = ws.ListObjects(1)
Set lColName = lo.ListColumns(3)
lColName.DataBodyRange.Formula = "=IFERROR(INDEX(Staff[CREDENTIALS],MATCH([@[Staff, Last Name]],LastName,0)),"")"
End Sub
Все, что мне действительно нужно сделать, это поместить формулу в первую строку таблицы (строка 2) в третьем столбце «Персонал, учетные данные». Он извлекается из другой таблицы Excel «Staff».
Комментарии:
1. Как вы правильно сказали, все, что вам нужно сделать, это поместить вашу формулу в первую ячейку. Тогда почему вы пытаетесь поместить ее во весь диапазон столбцов? Попробуйте
lColName.DataBodyRange.Cells(1).Formula = [whatever]
Ответ №1:
Я полагаю, что проблема связана с вашей формулой (я знаю, что вы упомянули, что она работает, когда вы вводите ее вручную, однако, когда я пытаюсь, я получаю сообщение об ошибке), попробуйте изменить [@[Staff, Last Name]]
на Staff[Last Name]
Кроме того, вам нужно экранировать ""
в IFERROR
формуле, приведенный ниже код должен работать:
Sub test3()
Dim ws As Worksheet
Dim lo As ListObject
Dim lCol As ListColumn
Set ws = ThisWorkbook.Worksheets("Transactions")
Set lo = ws.ListObjects(1)
Set lColName = lo.ListColumns(3)
lColName.DataBodyRange.Formula = "=IFERROR(INDEX(Staff[CREDENTIALS],MATCH(Staff[Last Name],LastName,0)),"""")"
End Sub
Комментарии:
1. Рад помочь и добро пожаловать в Stack Overflow. Если этот или любой другой ответ решил вашу проблему, пожалуйста, отметьте его как «принятый», щелкнув зеленую галочку.