Функция макс не работает

Форум PHP программистов ► PHP практикум ► PHP для начинающих

Новичок

Профиль
Группа: Пользователь
Сообщений: 34
Пользователь №: 17304
На форуме:
Карма:

подскажите в чем проблема, ситуация смешная, а решить не знаю как.

есть файл с данными, пусть test.dat:

в файле находятся такие цифры:

вывожу его циклом,

PHP
$file = file ( ‘test.dat’ );

for( $i = 0 ; $i count ( $file ); $i ++)
<
list( $num ) = explode ( «::» , $file [ $i ]);

// проблема заключается в том, что мне нужно определить максимальное число и вывести его.

// и нихрена не выходит. пишет ошибку: [b]Warning: Wrong parameter count for max() in \localhost\max. php on line 12[/b]

подскажите пожалуйста как определить максимальное число в файле!
самое интересное, что с массивами, как показано в доках — работает ! с файлами почему-то не хочет.

как я понял, нужно эти числа как-то засунуть в массив и потом прочитать этой функцией, кто может, покажите пожалуйста код.

Цитата (Vikt0r @ 28.05.2009 — 17:18)
подскажите в чем проблема, ситуация смешная, а решить не знаю как.

есть файл с данными, пусть test.dat:

в файле находятся такие цифры:

вывожу его циклом,

PHP
$file = file ( ‘test.dat’ );

for( $i = 0 ; $i count ( $file ); $i ++)
<
list( $num ) = explode ( «::» , $file [ $i ]);

// проблема заключается в том, что мне нужно определить максимальное число и вывести его.

// и нихрена не выходит. пишет ошибку: [b]Warning: Wrong parameter count for max() in \localhost\max. php on line 12[/b]

подскажите пожалуйста как определить максимальное число в файле!
самое интересное, что с массивами, как показано в доках — работает ! с файлами почему-то не хочет.

как я понял, нужно эти числа как-то засунуть в массив и потом прочитать этой функцией, кто может, покажите пожалуйста код.

заранее благодарен

извините за беспокойство. поторопился с созданием такой интересной темки )).

кому интересно, вот код

PHP
$file = file ( ‘test.dat’ );

for( $i = 0 ; $i count ( $file ); $i ++)
<
list( $num ) = explode ( «::» , $file [ $i ]);

print $max ;

Ежели каждая строка в начале содержит нужное число, то можно сделать всё это немного проще.
И, кстати, тут в любом случае больше подойдет цикл foreach.

PHP
$file = file ( ‘test.dat’ );
foreach( $file as $k => $v )
<
$file [ $k ]= intval ( $file [ $k ] );
>

print $max ;

У меня возникла проблема код использовал тот же самый:

PHP
$file = file ( ‘test.dat’ );

for( $i = 0 ; $i count ( $file ); $i ++)
<
list( $num ) = explode ( «::» , $file [ $i ]);

print $max ;

Но определять максимальное значение напрач отказывался.

содержимое файла было тоже самое

Помогло такое действие: перед числами поставить еще один разделитель!)

не знаю можеть когда применяется explode файла, то первое значение считается не просто 3как в данном примере, а + еще и какой нибудь доп информацие? Странно, но объяснить сам я смог только так) Просто вдруг кто сталкнется!)

Это сообщение отредактировал Vikt0r — 28.05.2009 — 21:21

Подписаться на тему
Уведомление на e-mail об ответах в тему, во время Вашего отсутствия на форуме.

Подписка на этот форум
Уведомление на e-mail о новых темах на форуме, во время Вашего отсутствия на форуме.

Скачать/Распечатать тему
Скачивание темы в различных форматах или просмотр версии для печати этой темы.

Источник

Функция МАКС() в EXCEL

history 26 мая 2014 г.

Число1, число2. — от 1 до 255 чисел, среди которых требуется найти максимальное. Но, обычно указывается не число, а ссылка на диапазон, например, =МАКС(A5:A9)

Если аргументы не содержат чисел, функция МАКС() возвращает значение 0. Это серьезный недостаток, он негативно проявляется например, при решение задачи о нахождении максимального по условию .

Если аргумент является массивом или ссылкой, то учитываются только числа. Пустые ячейки, логические значения (ЛОЖЬ и ИСТИНА) и текст игнорируются. Это видно из таблицы в файле примера .

Не все так просто с логическими значениями, т.к. ЛОЖЬ эквивалентна 0, а ИСТИНА=1 (проверить это можно записав формулу =ИСТИНА+0 ). Если логическое значение введено в аргументе не через ссылку, а напрямую ( =МАКС(ИСТИНА;-55) ), то формула учтет это значение (в нашем случае она вернет 1). Если логическое значение введено через ссылку, то оно учтено не будет (см. столбец С на рисунке выше). Учесть логические выражения можно используя формулу =МАКСА(C5:C9) , однако, с ней нужно быть осторожней, т.к. при наличии текстовых значений или чисел в текстовом формате, функция =МАКСА() возвращает 0.

Значение ошибки в ячейке приводит к ошибке в формуле. Прежде чем применять функцию МАКС() — обработайте ошибку, например с помощью функции ЕСЛИОШИБКА() .

Значение числа в текстовом формате игнорируется функцией МАКС() (см. столбец Е на рисунке выше). Перед нахождением максимального значения можно попытаться преобразовать все значения в числовой формат. Это можно сделать формулой массива = МАКС(ЕСЛИ(ЕЧИСЛО(E5:E9+0);E5:E9+0;»»))

В отличие от функции СУММ() и СЧЁТ() у МАКС() нет аналога СУММЕСЛИ() и СЧЁТЕСЛИ() , позволяющих выполнять вычисления с учетом условия. Но, с помощью формул массива можно получить формулу для нахождения максимального с учетом условия (см. здесь ).

Например, найдем максимальное значение только среди отрицательных чисел. сделаем это с помощью формулы массива = МАКС(ЕСЛИ(A17:A21 .

Аналогичного результата можно добиться и без формул массива, например с помощью дополнительного столбца или автофильтра (см. файл примера ).

Источник

Функции МАКС и МАКСА в Excel для анализа максимальных значений

Функция МИН Excel

В самом названии функции МИН содержится ответ на вопрос, что эта функция делает. Ну конечно, функция МИН возвращает минимальное значение диапазона или введенных чисел. Если мы напишем, к примеру, в ячейке А1 такую функцию =МИН(3; 4; -7; 23; 0; 73; 12), то получим в ячейке минимальное число среди перечисленных, а именно -7.

Функция МИН Excel

Обратите внимание на ограничение — в скобках мы можем указать не более 255 чисел.

Таким же образом мы можем указывать в качестве аргумента не конкретные числа, а диапазон ячеек в котором ищем наименьшее значение. К примеру, если мы хотим найти минимальное значение в диапазоне A1:A7 и поместить результат в ячейку B2, то должны в ячейке B2 написать =МИН(A1:A7)

Примеры использования функций МАКС и МАКСА в Excel

Пример 1. Экономист предприятия записывает доходы и расходы в один столбец таблицы Excel, при этом доходы являются положительными числами, а расходы – отрицательными. Найти максимальный расход за последние несколько дней.

Для расчета используем формулу массива:

    B3:B12 Примечание: наибольшим числом из диапазона отрицательных чисел является, значение которого ближе к нулю. В данной задаче нас интересовал максимальный расход, поэтому для поиска максимального значения была использована функция ABS, возвращающая модуль числа.

В результате вычислений формулой, мы получили максимальную сумму расходов используя функцию МАКС, не смотря на то что это отрицательное число со знаком минус.

Синтаксис функции ДМАКС()

Для использования этой функции требуется чтобы:

  • исходная таблица имела заголовки столбцов;
  • критерии должны были оформлены в виде небольшой таблицы с заголовками;
  • заголовки таблицы критериев совпадали с заголовками исходной таблицы (если критерий не задается формулой).

ДМАКС( база_данных;поле;условия ) База_данных представляет собой диапазон ячеек с данными связанными логически, т.е. таблицу. Верхняя строка таблицы должна содержать заголовки всех столбцов. В Базе_данных строки называются записями, а столбцы — полями. Поле — заголовок столбца, в котором ищется максимальное значение, если выполняется условие. Существует несколько вариантов заполнения аргумента Поле :

  • можно ввести текстовое значение, представляющий собой название одного из заголовков Базы_данных(исходной таблицы) . Текст указывается в двойных кавычках, например “Возраст” или “Урожай”,
  • можно ввести число (без кавычек), задающее положение столбца в Базе_данных: 1 — для первого столбца, 2 — для второго и т.д.
  • можно ввести ссылку на ячейку, содержащую заголовок столбца.

Условия — интервал ячеек, который содержит задаваемые условия (т.е. таблица критериев). Структура таблицы с критериями отбора для ДМАКС() аналогична структуре для Расширенного фильтра и, например, функции БДСУММ() .

Задачи

Предположим, что в диапазоне A 5:D11 имеется таблица продаж ( База_данных ), содержащая Поля (столбцы) Товар , Продавец, Продажи и Дата (см. файл примера и рисунок выше).

Сформулируем задачи в виде вопросов.

Вопрос 1 (Определить максимальные продажи Белова ). Т.е. найдем строки, в которой в столбце Продавец содержится значение Белов . Если такие строки есть в таблице, то для них выведем максимальное значение из столбца Продажи .

  • Создадим в диапазоне G5:G6табличку критериев (желательно над исходной таблицей или сбоку, чтобы она не мешала добавлению новых данных в таблицу), состоящую из заголовка (совпадает с названием заголовка столбца исходной таблицы, к которому применяется критерий) и собственно критерия (условия отбора);
  • Условия отбора должны быть записаны в специальном формате: =”=Белов” (будет производиться поиск в столбце Продавец только значений точно совпадающих со словом Белов (или белов , БЕЛОВ , т.е. без учета регистра ). Если написать условие не в виде =”=Белов”, а просто ввести в ячейку значение Белов , то условию будут удовлетворять текстовые строки, которые содержат слово Белов , например, « Белов Иван», «Иван Белов» и пр.)

Предполагаем, что База_данных (исходная таблица) находится в A 5:D11 . С5 – это ссылка на заголовок столбца, в котором ищется максимальное значение, если выполняется условие. G5:G6 – ссылка на табличку критериев (см. рисунок выше).

Итоговая формула выглядит так =ДМАКС(B5:C11;C5;G5:G6)

Как видно из исходной таблицы, условиям удовлетворяет 3 строки, поэтому результатом будет максимальное значение из массива (450; 6544; 1245), т.е. 6544.

Альтернативное решение – формула =НАИБОЛЬШИЙ(ЕСЛИ(B6:B11=G6;C6:C11;””);1) , которая вводится как формула массива ( подробнее см. здесь ). В случае, когда ни одна строка не удовлетворяет условиям, то формула вернет ошибку #ЧИСЛО! в отличие от ДМАКС() , которая вернет 0 (это может ввести в заблуждение, т.к. не понятно есть ли в исходной таблице строки, удоблетворяющие критерию или нет. См. раздел Недостаток функции ).

Вопрос 2 (Последняя продажа Белова). В какой день Белов продал последнюю партию товара?

Решение аналогично предыдущей задаче, только максимальное значение ищется не в столбце С ( Продажи ), а в столбце D ( Дата ).

Вопрос 3 (Максимальные продажи Мяса продавцом Белов)

В данном случае таблица критериев представляет собой 2 столбца Товар и Продавец .

Вопрос 4 (Максимальные продажи среди продаж Белова или Батурина)

В данном случае таблица критериев представляет собой 1 столбец Продавец с 2-мя строками (с фамилиями продацов Белов и Батурин ).

Недостаток функции

В случае, когда ни одна строка не удовлетворяет условиям, то функция ДМАКС() вернет 0. Это может ввести в заблуждение, т.к. не понятно: есть ли на самом деле строки, удовлетворяющие критерию и максимальное значение =0 или в исходной таблице отстутствуют строки, удоблетворяющие критерию.

Как показано на рисунке выше, Параметр3 вообще отстутствует в исходной таблице, но “максимальным” значением является 0!

Лучше использовать альтернативную формулу =НАИБОЛЬШИЙ(ЕСЛИ(A6:A15=D6;B6:B15;””);1) , которая возвращает ошибку #ЧИСЛО! в случае, если ни одна строка не удовлетворяет критерию.

Примеры использования функций ДМИН и ДМАКС в Excel по условию

Пример 1. В таблице содержатся данные о сотрудниках фирмы (оформлена с учетом требований к БД). Необходимо определить:

  1. Минимальный и максимальный возраст мужчины.
  2. Минимальный и максимальны возраст женщины.
  3. Максимальный возраст члена коллектива с фамилией, начинающейся на «Б».

Вид таблицы данных:

На этом же листе создадим таблицу условий и таблицу для вывода найденных значений:

В ячейку C2 поместим список с двумя возможными значениями условий выборки из базы данных («М» и «Ж»).

Для нахождения минимального/максимального возраста мужчины используем функции:

  • A10:D18 – диапазон ячеек, в которых находится БД;
  • D1 – ячейка с названием поля данных, в котором хранятся сведения о возрасте;
  • A1:D2 – диапазон ячеек, в которых находится таблица условий.

В таблице критериев установим условие значением пола «Ж» и аналогичным способом найдем значения минимального/максимального возраста женщины:

Удалим содержимое из ячейки C2, в ячейке B2 введем строку =”=Б*”. Для поиска максимального возраста с установленным критерием используем функцию:

Данная запись является избыточной, поскольку после удаления значения из C2 будет произведен автоматический расчет с учетом нового критерия в ячейке D5. Однако, данная функция приведена для наглядности, чтобы продемонстрировать возможность указания второго аргумента в виде числового значения (в данном случае 4 – четвертый столбец, соответствующий полю «Возраст»). Полученный результат:

В результате мы получили все данные после выборки с условием отбора возраста из общей БД в Excel.

Аргументы функции

  • number1 (число1) – первое число диапазона данных, из которого нам нужно получить максимальное значение;
  • [number2], …([число2]) – (не обязательно) второе число диапазона данных, из которого нам нужно получить максимальное значение. Всего в качестве аргументов функции можно указать 255 чисел.

Дополнительная информация

  • Пустые ячейки, логические выражения, текст или ссылки игнорируются;
  • Если в аргументах указаны ячейки с ошибкой или текст, который не возможно перевести в число – функция выдаст ошибку;
  • Аргументами функции также могут служить имена, массивы или ссылки которые содержат в себе числа;
  • Учитываются логические значения и текстовые значения чисел, которые вы вводите непосредственно в список аргументов;
  • Если аргумент является массивом или ссылкой, то функция учитывает только числа. Пустые ячейки, логические значения или текст в массиве или ссылке игнорируются;
  • Если в аргументах функции не указано ни одного числового значения, функция выдаст значение “0” (ноль).

Множественные условия

Вышерассмотренный подход можно распространить на случаи когда необходимо найти максимальный или минимальный для нескольких текстовых условий.

В этом случае придется записать более сложную формулу массива :

В файле примера для наглядности настроено Условное форматирование для выделения строк, удовлетворяющим критериям . Кроме того, для выбора критериев использован Выпадающий список (см. желтые ячейки).

Аналогичным образом можно настроить формулы для нахождения минимального значения для строк, значения которых попадают в определенный диапазон.

Функция баз данных ДМИН

Этот вариант использует малоизвестную (и многими, к сожалению, недооцененную) функцию ДМИН (DMIN) из категории Работа с базой данных (Database) и требует небольшого изменения результирующей таблицы:

Как видите, зеленые ячейки с результатами транспонированы из столбца в строку и над ними добавлена мини-таблица (F4:H5) с условиями. Логика работы этой функции следующая:

  • База_данных – вся наша таблица вместе с заголовками.
  • Поле – название столбца из шапки таблицы, из которого выбирается минимальное значение.
  • Критерий – таблица с условиями отбора, состоящая (минимально) из двух ячеек: названия столбца, по которому идет проверка (Товар) и критерия (Бумага, Карандаши, Ручки).

Это обычная формула (не формула массива), т.е. можно вводить и использовать ее привычным образом. Кроме того, в той же категории можно найти функции БДСУММ (DSUM) , ДМАКС (DMAX) , БСЧЁТ (DCOUNT) , которые используются совершенно аналогично, но умеют находить не только минимум, но и сумму, максимум и количество значений по условию.

Источник

Читайте также:  Электростеклоподъемник лада калина не работает
Оцените статью