Excel: найдите значения min/max в столбце среди сопоставленных из другого столбца
у меня есть таблица с двумя столбцами, скажем:Б. У меня есть отдельный список (в столбце D) всех значений в столбце А. Для каждого целевого значения в столбце D Я хочу найти среди всех строк, col a которых соответствует целевому, минимальное и максимальное значения в столбце B. Например, если данные, как показано,
col A col B col D
1 7.5 1.00 7.5 1.00 1.20
2 7.5 1.04 8 1.08 1.45
3 7.5 1.08 8.5 1.17 1.83
4 7.5 1.15
5 7.5 1.20
6 8 1.08
7 8 1.13
8 8 1.20
9 8 1.29
10 8 1.38
11 8 1.43
12 8 1.45
13 8.5 1.17
14 8.5 1.22
15 8.5 1.26
16 8.5 1.35
17 8.5 1.42
18 8.5 1.51
19 8.5 1.58
20 8.5 1.64
21 8.5 1.69
22 8.5 1.74
23 8.5 1.79
24 8.5 1.83
Я хочу иметь формулы, которые возвращают последние два столбца (min и max).
Примечания:
было бы удобно иметь что-то, что работает даже при обращении к диапазонам, выходящим за пределы последней строки (например, использование
$A:$A
в формулах, не обязательно$A:$A
), Так что новые данные могут быть добавлены в нижней части столбцов A,B и все автоматически обновляется.столбцы A,B будет содержать другие данные, заголовки и т. д., поэтому я думаю, что некоторые формулы могут не работать со ссылками на целые столбцы, такие как
$A:$A
.
редактировать: я только что нашел несколько похожих / связанных сообщений
найдите дату MIN / MAX в диапазоне, если она соответствует критериям других столбцов
условные мин и Макс в Excel 2010
выберите минимальное значение в столбце B для тех же значений в Столбцах excel?
заданное значение в столбце A, найти min / max в столбце B в EXCEL
4 ответов
это работает для меня.
для мин:
=MIN(IF(($A:$A=D1),($B:$B)))
макс:
=MAX(IF(($A:$A=D1),($B:$B)))
обратите внимание, что это массив формул, поэтому вам нужно нажать CTRL+SHIFT+ENTER
Вы можете использовать формулы массивов, чтобы дать вам ответы, которые вам нужны.
в течение минуты вы можете использовать формулу в ячейке E1:
{=MIN(IF($A:$A=D1,$B:$B))}
и максимальная формула для ячейки F1:
{=MAX(IF($A:$A=D1,$B:$B))}
чтобы ввести формулу массива, вы должны ввести все, кроме фигурных скобок (фигурные скобки), затем нажмите клавиши Ctrl и Shift при нажатии клавиши enter... это добавит фигурные скобки, и формула будет считаться формулой массива.
раз вы можете скопировать формулу вниз на другие соответствующие значения
Формулы массива работают путем вычислять каждую комбинацию. Он будет вычислять, если значение в A1 совпадает с D1, и если это так, он даст значение B1, то если значение A2 совпадает с D1 он даст значение B2, и так далее. Это даст вам список (или массив) значений из столбца B, где значение в матч. Затем MIN / MAX рассчитывается как обычно.
на INDEX
функция может помочь вам избежать CSE, построив стандартную формулу, используя некоторую математику до нуля или сделать астрономические любые несоответствующие значения в зависимости от того, ищете ли вы MAX
или MIN
результат.
формула псевдо-MAXIF немного проще, поэтому я начну там.
=MAX(INDEX(B:B*(A:A=D1), , ))
Excel рассматривает любое логическое утверждение TRUE как 1 и любое ложное как 0 при использовании математически. Умножение значения в столбец B by 1 оставляет значение неизменным; умножение на 0 приведет к нулю. The INDEX
функция передает массив неизмененных значений и нулей в MAX
функция в зависимости от того, соответствует ли это критериям или нет. Результатом будет максимальное значение из столбца B, где столбец A равен критериям.
формула псевдо-MINIF по существу переворачивает процесс, математически исключая любое несоответствующее значение, оставляя только совпадающие значения, из которых выбрать MIN
from.
=MIN(INDEX(B:B+(A:A<>D1)*1E+99, , ))
опять же, TRUE is 1 и FALSE 0 но на этот раз мы используем его, чтобы добавить 1E + 99 (A 1 следовал по 99 нули, которые не будут MIN
ничего) к любым несоответствующим значениям. Соответствующие значения будут иметь 0 × 1Е+99 добавлено к ним, что приравнивается к нулю и не изменит их значение.
ссылки на полный диапазон ячеек столбцов, которые я использовал, не оказывают отрицательного влияния на задержку расчета больше, чем аналогичный формула массива будет.
вы можете рассчитать ссылки сами, предполагая, что в данных нет пробелов, используя именованные диапазоны.
например,
ARange =OFFSET ($A$2,0,0, COUNT($A:$A))
BRange =смещение ($B$2,0,0, COUNT ($A:$A))
(Я использую то же самое графа в обоих, чтобы убедиться, что области имеют одинаковый размер)
теперь я могу использовать формулу массива =MAX((ARange=D2)*(BRange))
чтобы получить max (и то же самое для min).
Вводятся Формулы массива с помощью CTRL + SHIFT + Enter
См. ответ @Simoco для правильной формулы