Я не уверен, правильно ли я выполнил вашу задачу, но давайте попробуем. Давайте представим, что у вас есть несколько случайных чисел в ячейках A2:A20
. Вы можете выбрать ячейки C2:C20
и ввести формулу массива нескольких ячеек , нажав Ctrl+Shift+Enter
в Windows:
=IFERROR(INDEX($A$2:$A$20,SMALL(IF($A$2:$A$20>50,ROW($A$2:$A$20),"-"),ROW()-ROW($C$1))-ROW($A$1)),"")
Который проверит, если эти числа больше 50, и напечатает только соответствующие. Диапазон, в котором вы вводите эту формулу, ДОЛЖЕН быть по крайней мере равным по размеру диапазону, который вы «фильтруете».
UPD: Итак, как это работает?
Стадия 1 - фильтрация:
$A$2:$A$20>50
В формуле массива этот код превратит ваши значения в упорядоченный (что важно) массив из True и False в соответствии с> 50 проверками. Например, если у вас есть таблица со значениями {55,10,40,51,49,89}
, они превратятся в {True,False,False,True,False,True}
Стадия 2 - разделение значений и позиция
IF( [Stage 1] ,ROW($A$2:$A$20),"-")
Этот оператор IF , основанный на проверке True / False, возвращает либо POSITION элемента, либо строковое значение "-". Позиция относится к листу, а не к ценностям - это будет важно позже. Итак, теперь мы имеем дело с массивом позиций для элементов, прошедших нашу проверку, и некоторыми строковыми значениями для всех остальных.
Этап 3 - изменить порядок позиций
SMALL( [Stage 2] ,ROW()-ROW($C$1))-ROW($A$1)
Функция SMALL помогает нам изменить порядок позиций, которые мы получаем из ЭТАПА 3. Таким образом, мы превращаем упорядоченный массив, например {2,"-","-",5,"-",7}
, в {2,5,7,"#NUM!","#NUM!","#NUM!"}
. Ошибка говорит нам, что мы попытались выполнить какое-то числовое действие со строкой. Это именно то, что нам нужно, чтобы отсортировать не относящиеся к делу ценности. Возвращаемое значение равно ROW()-ROW($C$1)
, и с помощью этого вычитания я определяю, какой номер массива из минимума должен возвращаться для каждой строки. Последнее вычитание -ROW($A$1)
превращает связанные позиции листа {2,5,7,"#NUM!","#NUM!","#NUM!"}
в связанные позиции таблицы {1,4,6,"#NUM!","#NUM!","#NUM!"}
Этап 4 - возврат начальных значений
INDEX($A$2:$A$20, [Stage 3] )
Это самая простая часть на мой взгляд. Итак, у нас есть массив таблиц связанных позиций. Теперь мы можем преобразовать его в фактические значения с помощью функции INDEX . Мы сообщаем этой функции, какую таблицу смотреть и какие значения строк возвращать. Таким образом, наш массив памяти {1,4,6,"#NUM!","#NUM!","#NUM!"}
превращается в нечто подобное {55,51,89,"#NUM!","#NUM!","#NUM!"}
. Который уже является результатом, которого мы хотим. Поскольку мы используем формула для нескольких ячеек массива - все значения будут распределены по строкам.
Этап 5 - эстетический
=IFERROR( [Stage 4] ,"")
Просто делает значения ошибок невидимыми. Это необязательный шаг, мне просто нравится, когда отчеты гладкие и блестящие.