Я пытаюсь создать макрос, позволяющий автозаполнять данные из другой книги с помощью INDEX MATCH. Я использовал точный код для другой формулы, и он работает, но когда я просто заменяю формулу в приведенном ниже коде, он дает мне «определенную пользователем или объектную ошибку».Формула IFERROR INDEX/MATCH, имеющая определенную или определяемую объектом ошибку
Ниже приведен мой код. Соответствующая формула начинается после .formula
. Остальная часть кода существует для автозаполнения пустых ячеек, и она уже работала с другим макросом.
Sub FillOrderType()
Dim LR As Long
LR = ActiveSheet.UsedRange.Find("*", SearchDirection:=xlPrevious,
SearchOrder:=xlByRows).Row
With Range("H2:H" & LR)
With .SpecialCells(xlCellTypeBlanks)
.Formula = "=IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!N:N, MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!L:L,0)), IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!N:N,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!L:L,0)),IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!M:M,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!K:K,0)),"")))"
End With
.Value = .Value
End With
End Sub
Любая помощь в определении проблемы была бы весьма признательна. И я прошу прощения за длинную формулу, я попытался ее обернуть, используя _
, но это просто не сработало.
EDIT:
Я считаю, что этот вопрос лежит исключительно на самой формуле, поскольку она выдвигает на первый план, когда я пытаюсь отладки
=IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!N:N, MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]EXP'!L:L,0)), IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!N:N,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]AOG'!L:L,0)),IFERROR(INDEX('C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!M:M,MATCH(G:G,'C:\Users\wwxuan\Desktop\KPI OUTBOUND 23.08.16\[KPI Outbound - (Aug) Rev5.xlsx]SCHED'!K:K,0)),"")))
Но у меня мало понятия о том, как преобразовать его в VBA код. В формуле значение, которое я хочу, лежит в разных листах в другой книге, и я использую IFERROR и INDEX MATCH для получения значений, которые я хочу.
делает ИИТ работу, если вы только сделать 'диапазон («H2»). Формула = ...'? в этом случае сделайте это и используйте insetad функции fill down. Я не уверен, что это работает, когда вы пытаетесь сделать то, что вы сделали здесь. – Andreas
Чтобы заполнить, выполните следующие действия: 'range (" H2: H "& LR) .filldown' – Andreas
Привет, спасибо за быстрый ответ. Я пробовал делать «range» («H2»). Formula = 'и он дает мне ту же« определенную пользователем или объектную ошибку », выделяя формулу. Весь код сам по себе не имеет проблемы, потому что я использовал тот же самый код с другой формулой на другом макросе, и он работает –