Формула массива выполняет несколько вычислений и возвращает либо один результат, либо массив. Все аргументы массива в формуле должны быть одинакового размера.
в вашем первом примере вы сравниваете одно значение чего-либо (поскольку самая внешняя функция в IF - это функция VALUE ()) с VLOOKUP, который возвращает строку ... которая должна быть неправильной ... тот факт, что ваш строка содержит фигурные скобки, не преобразует ее в массив.
во втором примере вы сравниваете одно значение с массивом, содержащим элементы {1,2,3,4}, поэтому на самом деле вы делаете четыре сравнения, и если одно из них разрешается в TRUE, вы добавляете 1.
Я не знаю, как преобразовать строку с разделителями-запятыми "{1,2,3,4}" в массив {1,2,3,4} без использования VBA, но, возможно, вы можете изменить свой тактику путем преобразования вашего значения VALUE (...) * VALUE (...) в строку и использования функции FIND (), чтобы определить число как подстроку строки условия.
например. скажем, ваш MID_CONCATENATE_TIMES_BLA_BLAH результат 7, а ваш
- строка условия = "{1, 3, 5, 7, 9}", НАЙТИ (MID_BLA, CONX_STR) = ИСТИНА
- строка условия = "{1, 2, 3, 4}", НАЙТИ (MID_BLA, CONDX_STR) = ЛОЖЬ
Это будет работать до тех пор, пока ваши результаты будут 1 цифрой. С более чем 1 цифрой вам нужно будет добавить пробел перед номером в MID_BLA и CONDX_STR; тоже не слишком сложно, но добавляя еще больше сложности в формулы.
Если вы хотите использовать VBA, вы можете использовать функцию Split () для создания массива, начинающегося с нуля, из отдельной строки
Function StrToArray(Arg As String) As Variant
StrToArray = Split(Arg, ",")
End Function
и окружите свой VLOOKUP в (1) с помощью StrToArray (VLOOKUP (...)), в этом случае вы должны удалить фигурные скобки из строк условий.
Надеюсь, это поможет - удачи