Программное обеспечение
Помогите подробрать функцию в Excel
Есть большая таблица в Excel c двумя столбцами - сотрудник и его зарплата. Причем, сотрудник может упоминаться много раз. Как определить, у кого из сотрудников самая большая сумарная зарлата?
Скорее всего, мой вариант решения задачи не годится, как лучший ответ, но именно в нем удовлетворена ваша просьба.
1. Задача должна быть решена функцией
2. Таблица большая, неопределенных размеров. Расширять таблицу дополнительными колонками не просили.
3. Определить только фамилию одного сотрудника с самой большой суммой.
Подобрать такую функцию не получится, нет ее в Экселе, но ее можно создать.
И так приступим к созданию собственной функции (Определенная пользователем) .
Разрешить выполнение макросов Сервис -> Макрос -> Безопасность -> Средняя.
Теперь вставить макрос Сервис -> Макрос -> Редактор Visual Basic.
Далее в редакторе VBA в окошке VBAProject кликнуть по VBAProject(имя файла) , затем Insert -> Module при этом откроется окошко вставки кода.
Код:
----------------
Function SumBig(Диапазон) As String
r = Диапазон. Rows.Count
smax = 0
For i = 1 To r
smin = 0
For j = i To r
If Диапазон (i, 1) = Диапазон (j, 1) Then
smin = smin + Диапазон (j, 2)
End If
Next j
If smax < smin Then
smax = smin
nmax = Диапазон (i, 1)
End If
Next i
SumBig = nmax & " - " & smax
End Function
----------------
Вставить код.
Перейти в окно Excel.
Выбирать ячейку для результата.
Кликнуть по fx (вставка функции) , откроется мастер функций. В окошке категория выбрать “Определенные пользователем”. В окошке выбрать функцию, выбрать “ SumBig ”.
Откроется окно ввода аргументов. Выбрать весь диапазон с ячеек с именами и начислениями. Нажать Ок.
1. Задача должна быть решена функцией
2. Таблица большая, неопределенных размеров. Расширять таблицу дополнительными колонками не просили.
3. Определить только фамилию одного сотрудника с самой большой суммой.
Подобрать такую функцию не получится, нет ее в Экселе, но ее можно создать.
И так приступим к созданию собственной функции (Определенная пользователем) .
Разрешить выполнение макросов Сервис -> Макрос -> Безопасность -> Средняя.
Теперь вставить макрос Сервис -> Макрос -> Редактор Visual Basic.
Далее в редакторе VBA в окошке VBAProject кликнуть по VBAProject(имя файла) , затем Insert -> Module при этом откроется окошко вставки кода.
Код:
----------------
Function SumBig(Диапазон) As String
r = Диапазон. Rows.Count
smax = 0
For i = 1 To r
smin = 0
For j = i To r
If Диапазон (i, 1) = Диапазон (j, 1) Then
smin = smin + Диапазон (j, 2)
End If
Next j
If smax < smin Then
smax = smin
nmax = Диапазон (i, 1)
End If
Next i
SumBig = nmax & " - " & smax
End Function
----------------
Вставить код.
Перейти в окно Excel.
Выбирать ячейку для результата.
Кликнуть по fx (вставка функции) , откроется мастер функций. В окошке категория выбрать “Определенные пользователем”. В окошке выбрать функцию, выбрать “ SumBig ”.
Откроется окно ввода аргументов. Выбрать весь диапазон с ячеек с именами и начислениями. Нажать Ок.
Сделать сводную таблицу. В поле данных поместить сумму по столбцу зарплат. Содержимое ячеек столбца с сотрудниками должно совпадать абсолютно для одного сотрудника, иначе программа не корректно сгруппирует.
Второй способ - создать список всех сотрудников так, чтобы каждый упоминался лишь однажды, а рядом забить формулу СУММЕСЛИ - критерий суммирования - сотрудник, диапазон - исодный столбец с зарплатами.
Второй способ плох тем, что нужно еще создать такой список сотрудников. Это описано здесь:
http://www.planetaexcel.ru/tip.php?aid=46
Выбирать нужно, конечно, способ 2 - динамический.
Ну, а если у Вас MS Office версии 2007 или 2010 - естественно, выбираем способ 3.
Если не разберетесь - могу помочь (пишите в почту).
Второй способ - создать список всех сотрудников так, чтобы каждый упоминался лишь однажды, а рядом забить формулу СУММЕСЛИ - критерий суммирования - сотрудник, диапазон - исодный столбец с зарплатами.
Второй способ плох тем, что нужно еще создать такой список сотрудников. Это описано здесь:
http://www.planetaexcel.ru/tip.php?aid=46
Выбирать нужно, конечно, способ 2 - динамический.
Ну, а если у Вас MS Office версии 2007 или 2010 - естественно, выбираем способ 3.
Если не разберетесь - могу помочь (пишите в почту).
1. отсортировать по именам
2. сделать subtotals
или сделать Pivot Table, если разберёшься как
2. сделать subtotals
или сделать Pivot Table, если разберёшься как
Если сотрудников не очень большое количество, то можно поступить вот так:
Выделение самой большой з/п происходит с помощью условного форматирования с формулой: =E$19=МАКС ($E$19:$I$19) (это для ячейки E19, с которой можно "растянуть" (скопировать) формат на соседние ячейки, что правее)

Выделение самой большой з/п происходит с помощью условного форматирования с формулой: =E$19=МАКС ($E$19:$I$19) (это для ячейки E19, с которой можно "растянуть" (скопировать) формат на соседние ячейки, что правее)
Похожие вопросы
- Помогите с формулой в Excel для выведения слова, исходя из заданного диапазона
- Есть ли функция в Excel, отличающая число от текста?
- Помогите с формулой в excel!
- Подскажите, как использовать функцию СЧЕТЕСЛИ в Excel если диапазоп ячеек находится на разных листах.
- Помогите ответить на вопросы MS Excel (последний)
- Как преобразовать сканированный файл PDF в Excel или Word?
- Есть ли возможность «научить» EXCEL расставлять данные согласно РУССКОМУ алфавиту?
- Форматирование в Excel
- Ms Excel 2010 сводные таблицы, функция впр
- Как настроить функцию поиска одного и того же слова в программе EXCEL