Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Гугл таблица, поиск в диапозоне данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Гугл таблица, поиск в диапозоне данных
nvkz60053134 Дата: Воскресенье, 08.12.2024, 06:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

2016
Всем привет!
Помогите с правильной формулой.
Суть такая, есть таблица с листами по месяцам, на каждом листе идут сотрудники со своими KPI по которым считает ранги, есть сумма рангов которую и надо посчитать на отдельном листе.

Ссылка на таблицу.
https://docs.google.com/spreads....0#gid=0
 
Ответить
СообщениеВсем привет!
Помогите с правильной формулой.
Суть такая, есть таблица с листами по месяцам, на каждом листе идут сотрудники со своими KPI по которым считает ранги, есть сумма рангов которую и надо посчитать на отдельном листе.

Ссылка на таблицу.
https://docs.google.com/spreads....0#gid=0

Автор - nvkz60053134
Дата добавления - 08.12.2024 в 06:28
Gustav Дата: Вторник, 10.12.2024, 11:45 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2805
Репутация: 1183 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
есть сумма рангов которую и надо посчитать на отдельном листе

Рангов или рейтингов? У Вас ранги в колонках U месячных листов, а считаете на листе "ИТОГОВЫЕ РАНГИ" суммы значений из колонок V месячных листов, которые называются "Рейтинг".

В формуле ниже я ориентировался на колонки V (при необходимости исправить на U несложно). Формула для ячейки C2 листа "ИТОГОВЫЕ РАНГИ" и может быть протянута ниже:
[vba]
Код
=LET(
_arr;   REDUCE({""\0};
        {"Май"; "Июнь"; "Июль"; "Август"; "Сентябрь"; "Октябрь"; "Ноябрь"; "Декабрь"};
        LAMBDA(_tot; _val;
            {_tot;
            LET(
                _a; INDIRECT(_val & "!A:A");
                _u; INDIRECT(_val & "!V:V");
                FILTER({_a\_u}; _a<>"")
            )}
        ));
SUM(FILTER(INDEX(_arr;;2); INDEX(_arr;;1) = A2))
)
[/vba]
Я вставил эти формулы в ваш файл в колонку K на листе "ИТОГОВЫЕ РАНГИ". С вашей колонкой C имеются существенные расхождения, которые можете проверить самостоятельно (у меня - правильно :) )


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
есть сумма рангов которую и надо посчитать на отдельном листе

Рангов или рейтингов? У Вас ранги в колонках U месячных листов, а считаете на листе "ИТОГОВЫЕ РАНГИ" суммы значений из колонок V месячных листов, которые называются "Рейтинг".

В формуле ниже я ориентировался на колонки V (при необходимости исправить на U несложно). Формула для ячейки C2 листа "ИТОГОВЫЕ РАНГИ" и может быть протянута ниже:
[vba]
Код
=LET(
_arr;   REDUCE({""\0};
        {"Май"; "Июнь"; "Июль"; "Август"; "Сентябрь"; "Октябрь"; "Ноябрь"; "Декабрь"};
        LAMBDA(_tot; _val;
            {_tot;
            LET(
                _a; INDIRECT(_val & "!A:A");
                _u; INDIRECT(_val & "!V:V");
                FILTER({_a\_u}; _a<>"")
            )}
        ));
SUM(FILTER(INDEX(_arr;;2); INDEX(_arr;;1) = A2))
)
[/vba]
Я вставил эти формулы в ваш файл в колонку K на листе "ИТОГОВЫЕ РАНГИ". С вашей колонкой C имеются существенные расхождения, которые можете проверить самостоятельно (у меня - правильно :) )

Автор - Gustav
Дата добавления - 10.12.2024 в 11:45
nvkz60053134 Дата: Среда, 11.12.2024, 12:46 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

2016
Gustav, огромное спасибо.
А можешь объяснить оно считает по каждому сотруднику независимо от того в какой ячейки он будет находиться? И обязательно чтобы везде имя и фамилия была одинаково написана?
 
Ответить
СообщениеGustav, огромное спасибо.
А можешь объяснить оно считает по каждому сотруднику независимо от того в какой ячейки он будет находиться? И обязательно чтобы везде имя и фамилия была одинаково написана?

Автор - nvkz60053134
Дата добавления - 11.12.2024 в 12:46
Gustav Дата: Среда, 11.12.2024, 16:10 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2805
Репутация: 1183 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
оно считает по каждому сотруднику независимо от того в какой ячейки он будет находиться?

В смысле, независимо от того, в какой ячейке он будет находиться в конкретном месяце? Конечно, независимо. Главное, чтобы эта ячейка находилась в колонке A, а в какой именно строке - абсолютно не важно. Ведь формула внутри себя сначала готовит виртуальный массив пар значений "сотрудник - сумма за месяц", последовательно складывая в него колонки A и V со всех месячных листов (в SQL эта операция называется UNION). Пустые строки при этом исключаем с помощью FILTER, чтобы массив не приобретал гигантский размер по вертикали.

А дальше совместно используемые функции SUM(FILTER(...)) вычисляют по данным этого массива общую сумму для каждого конкретного сотрудника (см. формулу выше). Чтобы заглянуть внутрь этого массива "сотрудник - сумма за месяц", можно справочно визуализировать его на рабочем листе. Для этого нужно слегка изменить предыдущую формулу и ввести ее "где-то сбоку" в одну ячейку, следя за тем, чтобы в соседней колонке справа и в нужном количестве строк ниже при этом не было занятых ячеек - чтобы формула смогла "саморазвернуться":
[vba]
Код
=LET(
_arr;   REDUCE({""\0};
        {"Май"; "Июнь"; "Июль"; "Август"; "Сентябрь"; "Октябрь"; "Ноябрь"; "Декабрь"};
        LAMBDA(_tot; _val;
            {_tot;
            LET(
                _a; INDIRECT(_val & "!A:A");
                _u; INDIRECT(_val & "!V:V");
                FILTER({_a\_u}; _a<>"")
            )}
        ));
_arr
)
[/vba]
Я вставил эту формулу в ячейку W2 листа "ИТОГОВЫЕ РАНГИ" по ссылке выше.

P.S. Как вариант решения - можно использовать этот визуализированный массив на рабочем листе как промежуточный набор данных для применения по сотрудникам более простых формул с функцией SUMIF(СУММЕСЛИ). Тогда протягиваемая формула для ячейки C2 будет совсем простой:
Код
=SUMIF(W:W; A2; X:X)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
оно считает по каждому сотруднику независимо от того в какой ячейки он будет находиться?

В смысле, независимо от того, в какой ячейке он будет находиться в конкретном месяце? Конечно, независимо. Главное, чтобы эта ячейка находилась в колонке A, а в какой именно строке - абсолютно не важно. Ведь формула внутри себя сначала готовит виртуальный массив пар значений "сотрудник - сумма за месяц", последовательно складывая в него колонки A и V со всех месячных листов (в SQL эта операция называется UNION). Пустые строки при этом исключаем с помощью FILTER, чтобы массив не приобретал гигантский размер по вертикали.

А дальше совместно используемые функции SUM(FILTER(...)) вычисляют по данным этого массива общую сумму для каждого конкретного сотрудника (см. формулу выше). Чтобы заглянуть внутрь этого массива "сотрудник - сумма за месяц", можно справочно визуализировать его на рабочем листе. Для этого нужно слегка изменить предыдущую формулу и ввести ее "где-то сбоку" в одну ячейку, следя за тем, чтобы в соседней колонке справа и в нужном количестве строк ниже при этом не было занятых ячеек - чтобы формула смогла "саморазвернуться":
[vba]
Код
=LET(
_arr;   REDUCE({""\0};
        {"Май"; "Июнь"; "Июль"; "Август"; "Сентябрь"; "Октябрь"; "Ноябрь"; "Декабрь"};
        LAMBDA(_tot; _val;
            {_tot;
            LET(
                _a; INDIRECT(_val & "!A:A");
                _u; INDIRECT(_val & "!V:V");
                FILTER({_a\_u}; _a<>"")
            )}
        ));
_arr
)
[/vba]
Я вставил эту формулу в ячейку W2 листа "ИТОГОВЫЕ РАНГИ" по ссылке выше.

P.S. Как вариант решения - можно использовать этот визуализированный массив на рабочем листе как промежуточный набор данных для применения по сотрудникам более простых формул с функцией SUMIF(СУММЕСЛИ). Тогда протягиваемая формула для ячейки C2 будет совсем простой:
Код
=SUMIF(W:W; A2; X:X)

Автор - Gustav
Дата добавления - 11.12.2024 в 16:10
Gustav Дата: Среда, 11.12.2024, 16:31 | Сообщение № 5
Группа: Админы
Ранг: Участник клуба
Сообщений: 2805
Репутация: 1183 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
И обязательно чтобы везде имя и фамилия была одинаково написана?

В общем, да. Чтобы не нагружать формулу элементами для неполного поиска - символами подстановки и т.п. А чтобы быть уверенным, что имена и фамилии всех сотрудников написаны одинаково на всех месячных листах, можно еще раз немного изменить окончание формулы для того, чтобы она для проверки выводила полный уникальный список всех сотрудников, хотя бы раз упомянутых на месячных листах. И тогда, если какой-либо сотрудник в силу опечатки встретится в списке более одного раза (возможно, с досадным отличием в одной букве), это всегда будет заметно визуально.

Новая редакция формулы - для вывода по алфавиту уникальных имен сотрудников с их суммами по рангам:
[vba]
Код
=LET(
_arr;   REDUCE({""\0};
        {"Май"; "Июнь"; "Июль"; "Август"; "Сентябрь"; "Октябрь"; "Ноябрь"; "Декабрь"};
        LAMBDA(_tot; _val;
            {_tot;
            LET(
                _a; INDIRECT(_val & "!A:A");
                _u; INDIRECT(_val & "!V:V");
                FILTER({_a\_u}; _a<>"")
            )}
        ));
_a;     INDEX(_arr;;1);
_uniq;  SORT(UNIQUE(FILTER(_a; _a<>""; _a<>"Сотрудники")));
_sums;  MAP(_uniq; LAMBDA(_emp; SUM(FILTER(INDEX(_arr;;2); INDEX(_arr;;1) = _emp))));

{_uniq\_sums}
)
[/vba]
Я вставил эту формулу в ячейку Z2 листа "ИТОГОВЫЕ РАНГИ" по ссылке выше.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
И обязательно чтобы везде имя и фамилия была одинаково написана?

В общем, да. Чтобы не нагружать формулу элементами для неполного поиска - символами подстановки и т.п. А чтобы быть уверенным, что имена и фамилии всех сотрудников написаны одинаково на всех месячных листах, можно еще раз немного изменить окончание формулы для того, чтобы она для проверки выводила полный уникальный список всех сотрудников, хотя бы раз упомянутых на месячных листах. И тогда, если какой-либо сотрудник в силу опечатки встретится в списке более одного раза (возможно, с досадным отличием в одной букве), это всегда будет заметно визуально.

Новая редакция формулы - для вывода по алфавиту уникальных имен сотрудников с их суммами по рангам:
[vba]
Код
=LET(
_arr;   REDUCE({""\0};
        {"Май"; "Июнь"; "Июль"; "Август"; "Сентябрь"; "Октябрь"; "Ноябрь"; "Декабрь"};
        LAMBDA(_tot; _val;
            {_tot;
            LET(
                _a; INDIRECT(_val & "!A:A");
                _u; INDIRECT(_val & "!V:V");
                FILTER({_a\_u}; _a<>"")
            )}
        ));
_a;     INDEX(_arr;;1);
_uniq;  SORT(UNIQUE(FILTER(_a; _a<>""; _a<>"Сотрудники")));
_sums;  MAP(_uniq; LAMBDA(_emp; SUM(FILTER(INDEX(_arr;;2); INDEX(_arr;;1) = _emp))));

{_uniq\_sums}
)
[/vba]
Я вставил эту формулу в ячейку Z2 листа "ИТОГОВЫЕ РАНГИ" по ссылке выше.

Автор - Gustav
Дата добавления - 11.12.2024 в 16:31
nvkz60053134 Дата: Четверг, 12.12.2024, 07:25 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

2016
Gustav, ты просто космос)
Спасибо большое, буду разбираться с проделанной работой.
 
Ответить
СообщениеGustav, ты просто космос)
Спасибо большое, буду разбираться с проделанной работой.

Автор - nvkz60053134
Дата добавления - 12.12.2024 в 07:25
nvkz60053134 Дата: Четверг, 12.12.2024, 07:44 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

2016
Я вставил эти формулы в ваш файл в колонку K на листе "ИТОГОВЫЕ РАНГИ". С вашей колонкой C имеются существенные расхождения, которые можете проверить самостоятельно (у меня - правильно )

Знаю, т.к. использовать копирование ячеек через "="

P.S. Как вариант решения - можно использовать этот визуализированный массив на рабочем листе как промежуточный набор данных для применения по сотрудникам более простых формул с функцией SUMIF(СУММЕСЛИ). Тогда протягиваемая формула для ячейки C2 будет совсем простой:

=СУММЕСЛИ(W:W; A2; X:X)

Я правильно понимаю, что для работы по этой формуле мне сперва нужно объединить данные со всех листов в 1 и потом через СУММЕСЛИ будет работать?

И еще вопрос.
Для дальнейшего использования твоей формулы мне нужно будет поменять только название месяцев и оставить тот же формат таблицы чтобы все нормально работало?
Дальше листы будут называться Январь 2025 к примеру и в формуле я уже буду писать так же.


Сообщение отредактировал nvkz60053134 - Четверг, 12.12.2024, 07:45
 
Ответить
Сообщение
Я вставил эти формулы в ваш файл в колонку K на листе "ИТОГОВЫЕ РАНГИ". С вашей колонкой C имеются существенные расхождения, которые можете проверить самостоятельно (у меня - правильно )

Знаю, т.к. использовать копирование ячеек через "="

P.S. Как вариант решения - можно использовать этот визуализированный массив на рабочем листе как промежуточный набор данных для применения по сотрудникам более простых формул с функцией SUMIF(СУММЕСЛИ). Тогда протягиваемая формула для ячейки C2 будет совсем простой:

=СУММЕСЛИ(W:W; A2; X:X)

Я правильно понимаю, что для работы по этой формуле мне сперва нужно объединить данные со всех листов в 1 и потом через СУММЕСЛИ будет работать?

И еще вопрос.
Для дальнейшего использования твоей формулы мне нужно будет поменять только название месяцев и оставить тот же формат таблицы чтобы все нормально работало?
Дальше листы будут называться Январь 2025 к примеру и в формуле я уже буду писать так же.

Автор - nvkz60053134
Дата добавления - 12.12.2024 в 07:44
nvkz60053134 Дата: Четверг, 12.12.2024, 07:46 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

2016
Можно ли удалить лишние столбцы E:I на листе итоговые цели?
 
Ответить
СообщениеМожно ли удалить лишние столбцы E:I на листе итоговые цели?

Автор - nvkz60053134
Дата добавления - 12.12.2024 в 07:46
Gustav Дата: Пятница, 13.12.2024, 15:29 | Сообщение № 9
Группа: Админы
Ранг: Участник клуба
Сообщений: 2805
Репутация: 1183 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Я правильно понимаю, что для работы по этой формуле мне сперва нужно объединить данные со всех листов в 1 и потом через СУММЕСЛИ будет работать?

Правильно. Сейчас таким "объединителем" является диапазон Q:R на листе "ИТОГОВЫЕ РАНГИ", у него еще сверху я добавил заголовок "Список персональных строк из месяцев для суммирования (по типу "СУММЕСЛИ")". В ячейку Q2 (ранее была W2) для формирования такого списка введена формула из моего сообщения №4 данной темы.

Стратегически подобный "объединитель" может располагаться как сейчас - на том же рабочем листе, где для сотрудников будут использоваться формулы с СУММЕСЛИ (при желании колонки списка можно скрыть). Либо можно вынести "объединитель" на отдельный рабочий лист (служебный, вспомогательный), который также можно скрыть при необходимости. Я, наверное, даже больше склоняюсь в пользу варианта с отдельным листом, потому что на нём можно разместить и другую вспомогательную информацию. Например, список листов-месяцев, с которых учитываются данные при суммировании.

АНОНС: чуть позже я добавлю в это сообщение формулу для построения объединителя, в котором список листов-месяцев будет браться из вспомогательного столбца. Элементы списка, размещенные в отдельных ячейках такого столбца, редактировать значительно проще, чем каждый раз "шуровать" внутри формулы, с риском ненароком повредить что-нибудь в ней.

P.S. Сделано. Допустим, список листов-месяцев будет располагаться на том же листе, что и объединитель, в колонке X, начиная с ячейки X2 (X1 оставим, например, для служебного заголовка). При этом ячейки не обязаны быть заполнены подряд, т.е. возможно нахождение пустых ячеек между элементами списка - функция FILTER уберет пустые значения, а UNIQUE исключит дубликаты.

Новая редакция формулы для "объединителя" может быть такой (после исключения внешней функции LET - она здесь лишняя):
[vba]
Код
=REDUCE({""\0};
UNIQUE(FILTER(X2:X; X2:X<>""));
LAMBDA(_tot; _val;
    {_tot;
    LET(
        _a; INDIRECT(_val & "!A:A");
        _u; INDIRECT(_val & "!V:V");
        FILTER({_a\_u}; _a<>"")
    )}
))
[/vba]
А дальше новые листы-месяцы, например, "Январь 2025" просто добавляем в колонку X, без необходимости лезть внутрь формулы. Старые же месяцы, ставшие ненужными, просто удаляются очисткой соответствующих ячеек столбца X. При этом оставшиеся непустые ячейки могут оставаться на своих текущих местах, без необходимости какой-либо перегруппировки внутри столбца X.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Я правильно понимаю, что для работы по этой формуле мне сперва нужно объединить данные со всех листов в 1 и потом через СУММЕСЛИ будет работать?

Правильно. Сейчас таким "объединителем" является диапазон Q:R на листе "ИТОГОВЫЕ РАНГИ", у него еще сверху я добавил заголовок "Список персональных строк из месяцев для суммирования (по типу "СУММЕСЛИ")". В ячейку Q2 (ранее была W2) для формирования такого списка введена формула из моего сообщения №4 данной темы.

Стратегически подобный "объединитель" может располагаться как сейчас - на том же рабочем листе, где для сотрудников будут использоваться формулы с СУММЕСЛИ (при желании колонки списка можно скрыть). Либо можно вынести "объединитель" на отдельный рабочий лист (служебный, вспомогательный), который также можно скрыть при необходимости. Я, наверное, даже больше склоняюсь в пользу варианта с отдельным листом, потому что на нём можно разместить и другую вспомогательную информацию. Например, список листов-месяцев, с которых учитываются данные при суммировании.

АНОНС: чуть позже я добавлю в это сообщение формулу для построения объединителя, в котором список листов-месяцев будет браться из вспомогательного столбца. Элементы списка, размещенные в отдельных ячейках такого столбца, редактировать значительно проще, чем каждый раз "шуровать" внутри формулы, с риском ненароком повредить что-нибудь в ней.

P.S. Сделано. Допустим, список листов-месяцев будет располагаться на том же листе, что и объединитель, в колонке X, начиная с ячейки X2 (X1 оставим, например, для служебного заголовка). При этом ячейки не обязаны быть заполнены подряд, т.е. возможно нахождение пустых ячеек между элементами списка - функция FILTER уберет пустые значения, а UNIQUE исключит дубликаты.

Новая редакция формулы для "объединителя" может быть такой (после исключения внешней функции LET - она здесь лишняя):
[vba]
Код
=REDUCE({""\0};
UNIQUE(FILTER(X2:X; X2:X<>""));
LAMBDA(_tot; _val;
    {_tot;
    LET(
        _a; INDIRECT(_val & "!A:A");
        _u; INDIRECT(_val & "!V:V");
        FILTER({_a\_u}; _a<>"")
    )}
))
[/vba]
А дальше новые листы-месяцы, например, "Январь 2025" просто добавляем в колонку X, без необходимости лезть внутрь формулы. Старые же месяцы, ставшие ненужными, просто удаляются очисткой соответствующих ячеек столбца X. При этом оставшиеся непустые ячейки могут оставаться на своих текущих местах, без необходимости какой-либо перегруппировки внутри столбца X.

Автор - Gustav
Дата добавления - 13.12.2024 в 15:29
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!