Я получаю пустые результаты в своем рабочем листе, когда я запускаю index и match в VBA, и я не знаю почему ... пожалуйста, помогите.
У меня есть некоторые данные на рабочем листе details2, которые содержат идентификаторы, имена, стоимость обслуживания и даты в разных столбцах. У меня также есть частично похожая информация в другом рабочем листе, называемом прогнозом, но без столбца дат. Поскольку клиент может иметь несколько типов услуг, начиная с разных дат, я сопоставил идентификатор, имена, тип обслуживания и стоимость, чтобы извлечь нужные даты. Но я хочу написать это, используя VBA, чтобы сделать его гибким, потому что я выполняю это каждый месяц, и диапазоны данных могут меняться. Я уже пробовал использовать формулу массива и скопировал его, которые работают нормально. но когда я помещаю это в цикл, вывод ячеек остается пустым. Я ожидаю значения даты из листа DETAILS2 в столбце N другого листа
но мой столбец N пуст ... другая часть программы работает нормально.
Это код, который я пробовал, который работает:
With Test1Ws
.Range("N3").FormulaArray = "=IFNA(INDEX(DETAILS2!$A$3:$Z$780,MATCH(1,
(DETAILS2!$A$3:$A$780=B3)*(DETAILS2!$B$3:$B$780=C3)*
(details2!$X$3:$X$780=F3)*(details2!$Y$3:$Y$780=G3),0),18),0)"
.Range("N3").AutoFill .Range("N3:N" & Test1LastRow)
End With
Это код, который я написал, пытаясь сделать его гибким для изменения диапазонов:
With Test1Ws
For x = 3 To Test1LastRow
On Error Resume Next
Test1Ws.Range("N" & x).Value =
Application.WorksheetFunction.IfNa(
Application.WorksheetFunction.Index(CurrDeIndexRng,
Application.WorksheetFunction.Match(1,(CurDeIdRng = .Range("B" &
x).Value) * (CurDeNameRng = .Range("C" & x).Value) * (CurDeServRng =
.Range("F" & x).Value) * (CurDeCstRng = .Range("G" & x).Value), 0),
18), 0)
Next x
End With