Как мне преобразовать строку из ячейки в текстовый массив внутри функции, которая должна использовать массив, без использования VBA и без добавления массива в любую другую часть документа?Это будет один из этих массивов на более чем 1000 строк.Формат строки: ^ [a-zA-Z0-9., -] * $ с разделителем "," в качестве разделителя.
Это та функция, которую я хотел бы достичь
У меня естьТаблица Excel со следующими столбцами
A: Идентификационные номера для сравнения, разделенные запятой (разделитель может быть изменен при необходимости).Около 100 идентификаторов было бы хорошо поддерживать как минимум.
B: ID (каждое значение в строках столбца уникально, но не отсортировано и не может быть отсортировано, поскольку сортировка необходима на основе других критериев)
C: Значение (несколько строк в столбце могут иметь одно и то же значение)
D: вывести один идентификатор из разделенных запятыми идентификаторов, который имеет наибольшее значение в своей строке
Проблемная частьoutput
До сих пор я создал функцию, которая находит правильный идентификатор в столбце B на основе значений в столбце C, но только если я ввожу строку из столбца A в качестве константы массива вручную внутри функции.Мне не удалось получить функцию для создания самого массива из столбца А., что необходимо.
Рабочая часть кода
В этом коде я ввел значения из столбца А вручнуюи это работает как надо.
=INDEX({"1.01-1","1.01-3","1.08-1","1.01-1-1A"},MATCH(MAX(INDEX(C$10:C$20,N(IF(1,MATCH({"1.01-1","1.01-3","1.08-1","1.01-1-1A"},B$10:B$20,0))))),INDEX(C$10:C$20,N(IF(1,MATCH({"1.01-1","1.01-3","1.08-1","1.01-1-1A"},B$10:B$20,0)))),0))
Обратите внимание, что начальная строка не является первой строкой, и массив используется в функции 3 раза.
Код, который пытается преобразовать строку в текстовый массив
Не работает, но если обернут в SUMPRODUCT (), он предоставляет массив для функции SUMPRODUCT (), конечно, не пригодный для использования, так как тогда яне может передать массив.Фон для этого кода можно найти в вопросе Разделить строку (ячейку) в Excel без VBA (например, для формулы массива) !.
=TRIM(MID(SUBSTITUTE(A10,",",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN(A10)-LEN(SUBSTITUTE(A10,",",""))+1))-1)*99+((ROW(OFFSET($A$1,,,LEN(A10)-LEN(SUBSTITUTE(A10,",",""))+1)))=1),99))
Второй код выводит первый элементмассива и вставленный в первый код не изменяют этот результат, как это было при переносе второго кода в SUMPRODUCT ().
Вот изображение моей упрощенной настройки теста в Excel для этого случая, идентичноечто описано выше.
Упрощенная настройка теста