Когда результаты формулы массива являются числами, я считаю, что в целом легко найти подходящий метод для свертывания массива в один результат. Однако, когда результаты формулы массива являются текстом, мне трудно манипулировать формулой таким образом, чтобы обеспечить единственный желаемый результат. Короче говоря, существует метод манипулирования массивом текстовых результатов, которые я упустил?. В нижней части этого вопроса для окончательной желаемой формулы, которая не работает, и запросите решения.
* Изменить - после прочтения этого снова я могу поочередно суммировать свой вопрос как: есть ли способ доступа к нескольким текстовым элементам из "результата массива формул", без индивидуального выбора (например: с помощью INDEX)?
Примеры, в которых работают формулы массива, где массив результатов - это числовые значения
(1) Пример 1: Предположим, что столбец Строки 1-500 представляют собой список идентификаторов продукта в формате xyz123, а в столбцах B строк 1-500 показаны общие продажи этого продукта. Если я хочу найти продажи для продукта с наивысшими объемами продаж, где последние 3 цифры ID превышают 400, я мог бы использовать Формулу массива, подобную так (подтвержденную CTRL + SHIFT + ENTER вместо просто ENTER):
=MAX(IF(VALUE(RIGHT(A1:A500,3))>400,B1:B500,""))
(2) Пример 2 Теперь предположим, что столбец B содержит имена продуктов, а не Sales. Теперь я хочу просто вернуть первое имя, которое соответствует критериям последних трех цифр идентификатора продуктa > 400. Это можно сделать следующим образом:
=INDEX(B1:B500,MIN(IF(VALUE(RIGHT(A1:A500,3))>400,ROW(A1:A500),"")))
Здесь я сделал небольшую манипуляцию, так что фактическая часть массива формулы [IF (RIGHT (A1: A500,3...) возвращает результат значения [ROWs cellsA1: A500, где последний 3 цифры выше 400], поэтому я могу использовать MIN для отображения только первого ROW #, который соответствует, и затем я могу использовать этот свернутый результат в регулярной функции INDEX.
(3) Пример 3. Для окончательного примера см. обсуждение аналогичного вопроса здесь. [Более подробно, чем приведенный ниже пример ниже, таким образом, который не имеет прямого отношения к этому вопросу]: qaru.site/info/500493/...
Предположим теперь, что вам нужен список всех наименований продуктов, где указаны последние 3 цифры идентификатора продуктa > 400. Насколько мне известно, это невозможно сделать ни в одной ячейке, это должно быть сделано путем размещения каждого отдельного результата в последующей ячейке. Следующая формула может быть помещена, например, в C1 и перетащена вниз на 10 строк, а затем отображать первые 10 наименований продуктов с идентификатором продукта, имеющим последние 3 цифры > 400.
=INDEX($B$1:$B$500,SMALL(IF(VALUE(RIGHT($A$1:$A$500,3))>400,ROW($A$1:$A$500),""),ROW()))
Пример, где формулы массива не будут работать, где массив результатов - текстовые значения
Предположим, что я хочу взять результаты в примере 3 и выполнить некоторые манипуляции с ними. Например, предположим, что я хочу объединить их все в одну строку текста. Нижеследующее не работает, потому что concatenate не будет принимать такие результаты как приемлемые аргументы.
=CONCATENATE((IF(VALUE(RIGHT($A$1:$A$500,3))>400,ROW($B$1:$B$500),"")))
Итак, вопрос: кто-нибудь знает, как заставить эту последнюю формулу работать? Или, как получить формулу для работы, которая принимает массив текстовых результатов, и либо преобразует ее в "полезный диапазон" [так что она может быть вставлена в Concatenate выше], либо может быть немедленно обработана текстовыми аргументами [например, в середине, поиск, замена и т.д.]? Прямо сейчас, единственный способ, который я могу увидеть, будет использовать пример 3 выше, а затем идти дальше и говорить, например, "Конкатенация" (C1, C2, C3... C10).