У меня проблема с вызовом функции Match из кода VBA: она возвращает неправильные значения.У меня есть такая таблица (это пример):
a b c d
1 testRange testValue
2 01/01/2011 00:00 03/01/2011 00:00 testValue = A4
3 02/01/2011 00:00
4 03/01/2011 00:00 result from match function
5 04/01/2011 00:00 3 testResult = MATCH(C2,A2:A20,1)
6 05/01/2011 00:00
7 06/01/2011 00:00 testResult
8 07/01/2011 00:00 9
9 08/01/2011 00:00
10 09/01/2011 00:00
11 10/01/2011 00:00
12 11/01/2011 00:00
13 12/01/2011 00:00
14 13/01/2011 00:00
15 14/01/2011 00:00
16 15/01/2011 00:00
17 16/01/2011 00:00
18 17/01/2011 00:00
19 18/01/2011 00:00
20 19/01/2011 00:00
диапазон, который я ищу, находится в A1: A20, и я ищу значение, записанное в C2, которое, как вы можетесм. это просто значение диапазона (чтобы убедиться, что значение находится в диапазоне).Я ожидаю, что функция Match вернет число 3, как это происходит при вызове из электронной таблицы (ячейка C5), но функция, вызываемая в VBA, возвращает значение 9 (ячейка C10).Я использовал этот код:
Sub testMatch()
testRange = Range("A2:A20")
testValue = Range("C2")
testResult = Application.WorksheetFunction.Match(testValue, testRange, 1)
Range("C8") = testResult
End Sub
Я уже пытался преобразовать testValue в Date и Double (решения, предложенные на других форумах), но с Date у меня тот же результат, а с Double я получаю ошибку 1004«Невозможно получить свойство Match класса WorksheetFunctions»
Есть предложения?
Спасибо