Поиск максимальных значений в зависимости от значений поиска

#excel #excel-formula

#преуспеть #excel-формула

Вопрос:

У меня есть счета на продажу хлеба, джема и так далее. как этот стол.

  ------- -------- ------- 
| Item  | Date   | Price |
 ------- -------- ------- 
| Bread | 1-Dec  | 5     |
 ------- -------- ------- 
| Jam   | 1-Dec  | 5     |
 ------- -------- ------- 
| Bread | 8-Dec  | 6     |
 ------- -------- ------- 
| Jam   | 8-Dec  | 4     |
 ------- -------- ------- 
| Bread | 15-Dec | 4     |
 ------- -------- ------- 
| Jam   | 15-Dec | 7     |
 ------- -------- ------- 
 

Мне нужна дата наивысшей цены для каждого товара, например

  ------- -------- --------------- 
| Item  | Date   | Highest Price |
 ------- -------- --------------- 
| Bread | 8-Dec  | 6             |
 ------- -------- --------------- 
| Jam   | 15-Dec | 7             |
 ------- -------- --------------- 
 

Это похоже на поиск максимальных значений в зависимости от значений поиска. Это очень похоже на Group By и Max в SQL. Как мне это сделать в Excel? Я пробовал сопоставлять индексы, а также гуглить. Ничто не помогает. Пожалуйста, помогите мне.

Комментарии:

1. Вы можете взглянуть на сводную таблицу. Это послужит вашей цели.

2. Какую версию Excel вы используете?

Ответ №1:

Обычно это делается с помощью сводной таблицы:

введите описание изображения здесь

  • Выберите свои данные.
  • Вставьте сводную таблицу.
  • В вашем случае используйте «Элемент» и «Дата» в качестве строк.
  • В вашем случае используйте «Цену» в качестве значения.
  • Затем нажмите «Цена» и в настройках поля выберите «Max».
  • Затем в самой сводной таблице справа на любую дату нажмите «Фильтр»> «Десятка лучших» и сделайте этот top 1 на основе максимальной цены.

Есть много способов сделать это с помощью формул, но если у вас есть Excel O365, это можно сделать с помощью одной единственной формулы, например:

введите описание изображения здесь

Формула в E2 :

 =TRANSPOSE(CHOOSE({1,2,3},TRANSPOSE(UNIQUE(A2:A7)),TRANSPOSE(MINIFS(B2:B7,A2:A7,UNIQUE(A2:A7),C2:C7,MAXIFS(C2:C7,A2:A7,UNIQUE(A2:A7)))),TRANSPOSE(MAXIFS(C2:C7,A2:A7,UNIQUE(A2:A7)))))
 

Или:

 =FILTER(A2:C7,ISNUMBER(MATCH(A2:A7,UNIQUE(A2:A7),0))*LET(X,MAXIFS(C2:C7,A2:A7,UNIQUE(A2:A7)),ISNUMBER(MATCH(C2:C7,MAXIFS(C2:C7,A2:A7,UNIQUE(A2:A7))))*ISNUMBER(MATCH(B2:B7,MINIFS(B2:B7,A2:A7,UNIQUE(A2:A7),C2:C7,X),0))))
 

Комментарии:

1. Спасибо. Теперь проблема с почтой почти решена. Есть ли какой-либо способ отобразить в сводной таблице порядок товара, максимальную цену и дату?

2. @PhyoMinYu, я не понимаю. Если у вас есть другой вопрос, не стесняйтесь открыть его на SO и объяснить свою проблему.

3. Мой плохой. Вопрос уже решен. Но мне нужно отобразить столбец значений перед столбцами строк в сводке, например, товар, максимальная цена, дата. На самом деле это еще одна проблема. Извините.