Создайте список значений из таблицы значений и исключите определенные значения - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть следующая электронная таблица Excel:

    A            B       C        D        E              F                 G    
1                 Q1     Q2       Q3      Q4        Positive values
2   Asset 1      -50     85      -90      70             85 
3   Asset 2      -28    -80      -45      60             70         
4   Asset 3      -30     50       55     -10             60      
5   Asset 4      -20      5      -80     -15              :  
6   Asset 5       35    -30       27     -98              :
7                    

В ячейках A1:E6 У меня есть различные активы с их производительностью за квартал Q1-Q4.

В Column F Я создаюсписок всех положительных характеристик активов по формуле здесь :

Column F = {LARGE(IF($B$2:$E$6>0,B$2:$E$6),ROW(B1:E1))}

Пока все это прекрасно работает.


Впрочем, теперь я хочуисключить определенные значения из списка в Column F.Например, я не хочу, чтобы номер 85 или номер 70 появлялись в списке.Поэтому я попытался изменить формулу на:

Column F = {LARGE(IF(AND($B$2:$E$6>0,$B$2:$E$6<>85,$B$2:$E$6<>70),B$2:$E$6),ROW(B1:E1))}

Однако теперь я получаю 0 в качестве результата.

Есть ли у вас какие-либо идеи формулы, которая могла бы решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018
  • Создать массив из 0, где 0 эквивалентен отрицательному числу или исключенным значениям

($B$2:$E$6>0)*($B$2:$E$6<>85)*($B$2:$E$6<>70)
  • 1 / (… будет преобразовыватьчто до 1 и ошибок

  • Умножьте на оригинал, чтобы создать массив исходных значений и ошибок


 =1/(($B$2:$E$6>0)*($B$2:$E$6<>85)*($B$2:$E$6<>70)) * B2:E6
  • Используйте агрегатную функцию, чтобы получить желаемые результаты

=AGGREGATE(14,6,1/(($B$2:$E$6>0)*($B$2:$E$6<>85)*($B$2:$E$6<>70))*$B$2:$E$6,ROWS($1:1))

Заполните, чтобы получить 2-е, 3-е и т. Д. Наибольшее

0 голосов
/ 29 сентября 2018

Если у вас есть данные в столбце F и вы хотите извлечь все значения, которые не 70 или 85 , в столбец G , затем в G2 введите:

=IFERROR(INDEX(F$2:F$9999, AGGREGATE(15, 6, ROW($1:$999)/((F$2:F$9999<>85)*(F$2:F$9999<>70)), ROW(1:1))),"")

и скопируйте вниз:

enter image description here

Обратите внимание, что этот подходне требует использования формулы массива.

0 голосов
/ 29 сентября 2018

Вы на правильном пути.Вместо использования AND будет работать вложенный IF.Вам нужно создать новый IF критерий для каждого нового условия, которое вы хотите проверить.Поэтому, если вы хотите исключить 85 и 70, вам нужно добавить два дополнительных оператора IF.

Формула для столбца F будет выглядеть следующим образом:

={LARGE(IF($B$2:$E$6>0,IF($B$2:$E$6<>85,IF($B$2:$E$6<>70,B$2:$E$6))),ROW(B1:E1))}

Здесь вы можете прочитать, как происходит процесс формулы: Минимум, если несколько критериев

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...