Новости:

Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин

Главное меню

Распределить поровну данные из одного столбца по трем другим

Автор Мария050288, 14.03.2023, 09:23:57

« назад - далее »

Мария050288

Добрый день!
В таблице есть столбец со списком ФИО, требуется распределить данные из этого столбца поровну в три других столбца (на скриншоте примерно изобразила). И важно, чтобы при разделении он не учитывал пустые ячейки и ячейки с формулами. Я знаю, как задать чтобы считал только ячейки с данными, но не знаю формулу разделения на столбцы и как использовать совместно эти формулы. Подскажите, пожалуйста, есть ли формула для этого?

Дмитрий Щербаков(The_Prist)

Думаю, с учетом этого:
Цитата: Мария050288 от 14.03.2023, 09:23:57не учитывал пустые ячейки и ячейки с формулами
решение можно получить только через скрипты.
Вы бы не скрин, а ссылку на файл приложили - тогда может можно было бы хотя бы попытаться какую-то формулу изобрести.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Мария050288

Благодарю за ответ! Ссылка на таблицу https://docs.google.com/spreadsheets/d/1BThewfrwtzAyAPudnGKG3GNpj7liU_fEd5LgM4mbVjk/edit?usp=sharing (часть данных я из нее по понятным причинам удалила, но они и не нужны). Мне нужно чтобы из столбца А листа "ФИО" фамилии+имена распределились на лист "распределение" по трем столбцам поровну. При этом диапазон был не только на заполненные ячейки, а на 200 ячеек: А2:А202 (так как эта таблица будет использовать в дальнейшем как шаблон и список может быть до 200 человек), поэтому и важно, чтобы пустые ячейки в подсчете при распределении не учитывались.

Дмитрий Щербаков(The_Prist)

Проверьте в файле по своей ссылке формулы в столбцах H:J. Обращаю внимание - они отличаются.
Исходные диапазон задан для строк 2:1000. При необходимости - расширить.
Первый столбец:
=if(row(A1)<=int(COUNTIF($A$2:$A$1000;"*? *")/3)+1;index($A$2:$A$1000;row(A1));"")
второй:
=if(H2<>"";index($A$2:$A$1000;row(A1)+COUNTIF($H$2:$H$1000;"*? *"));"")
опирается на первый(для простоты), поэтому если имена столбцов поменяются - надо будет везде H заменить на нужное имя столбца.
Третий:
=if(H2<>"";index($A$2:$A$1000;row(A1)+COUNTIF($H$2:$I$1000;"*? *"));"")
так же опирается на столбец H, но помимо него еще и на I: $H$2:$I$1000. Это тоже важно. Здесь должны быть указаны первые два столбца, в которые был выведен результат.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Мария050288

Спасибо вам большое! Вы волшебник! А есть другой способ вас отблагодарить (я не зарегистрирована в электронных кошельках)?

Дмитрий Щербаков(The_Prist)

Цитата: Мария050288 от 14.03.2023, 13:01:36А есть другой способ
Способ есть, необходимости нет :) Рад, что решение помогло.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Мария050288

Ну как же нет, любой труд должен быть вознагражден. Если надумаете - напишите, пожалуйста, как я могу вас отблагодарить. Вы мне оооочень помогли. Я уже перенесла формулы себе в табличку рабочую, поправила по индексам ячеек, все работает! Еще раз спасибо!

Мария050288

Здравствуйте! При дальнейшей работе с таблицей выяснилось, что формула работает некорректно (при большем или меньшем количестве фамилий он последние фамилии пропускает). Полагаю, что это связано с делением на 3 и округлением. Пробовала сама добавить туда округление в большую сторону, но ничего у меня не вышло :( Буду благодарна, если и в этот раз поможете мне (таблица таже, по ссылке ранее. Я там вручную добавила еще имена, видно, что он их игнорирует).

Дмитрий Щербаков(The_Prist)

Нет, проблема в другом совершенно. Формула работает корректно. Просто она опирается при подсчете строк на наличие именно двух слов(т.е Имя Фамилия), т.к. в столбце А у Вас идет объединение двух столбцов с обязательным пробелом. Если слово только одно - формула игнорирует некоторые значения, что логично. Изначально в столбцах были и имя и фамилия объединенные пробелом, на этом и был основан алгоритм формулы. А когда Вы руками ввели просто слова(без пробела на конце) - то формула и дала сбой, т.к. не ожидала такого поведения.
Если изменить формулу в столбце А на такую: =(C2&ЕСЛИ(D2<>"";" "&D2;""))
то можно подменить немного формулы вывода. В это формуле условие:
COUNTIF($A$2:$A$1000;"*? *")
записать так:
COUNTIF($A$2:$A$1000;"?*")
в файле поправил.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Мария050288

Спасибо, что возитесь со мной и моей задачкой. Так тоже получается не совсем верно  :'( в первых двух столбцах на три фио больше в каждом, чем в третьем, а важно, чтобы поровну (даже если число не делится на 3, то максимально равно. Например: 85 ФИО: по 29, 28, 28 в столбцах 1, 2, 3, соответственно). Можно сделать такое?

Дмитрий Щербаков(The_Prist)

#10
Прям вот именно так - не подскажу, некогда этим заниматься.
Попробуйте формулу в столбце Н заменить на такую:
=ЕСЛИ(СТРОКА(A1)<=ОКРУГЛВВЕРХ(СЧЁТЕСЛИ($A$2:$A$1000;"?*")/3;0);ИНДЕКС($A$2:$A$1000;СТРОКА(A1));"")
Распределять будет более предсказуемо и ровно, но все равно не 29, 28, 28. А скорее 29, 29 и 27. Вся проблема в том, что для прям такого распределения необходимо заранее вычислять разницу между предпоследним и последним столбцом.
В общем немного доработал формулы - смотрите детальнее в файле. По столбцам от H до J формулы такие:

  • H: =ЕСЛИ(СТРОКА(A1)<=ОКРУГЛ(СЧЁТЕСЛИ($A$2:$A$1000;"?*")/3;0);ИНДЕКС($A$2:$A$1000;СТРОКА(A1));"")
  • I: =ЕСЛИ(И(H2<>"";СТРОКА(A1)<=ЦЕЛОЕ((СЧЁТЕСЛИ($A$2:$A$1000;"?*")-ОКРУГЛВВЕРХ(СЧЁТЕСЛИ($A$2:$A$1000;"?*")/3;0))/2));ИНДЕКС($A$2:$A$1000;СТРОКА(A1)+СЧЁТЕСЛИ($H$2:$H$1000;"?*"));"")
  • J: =ЕСЛИ(H2<>"";ИНДЕКС($A$2:$A$1000;СТРОКА(A1)+СЧЁТЕСЛИ($H$2:$I$1000;"?*"));"")
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Мария050288

Огромное-приогромное спасибо!!! Теперь все работает как надо!

Яндекс.Метрика Рейтинг@Mail.ru