Страницы: 1
RSS
Поиск в строке не пустых ячеек, их суммирование и перенос суммы на новый лист
 
Здравствуйте.
Прошу помощи с написанием макроса.
Есть задача: есть набор данных по датам (дата первого дня недели), нужно чтобы в каждой строке, в которой заполнена ячейка столбца "номер", производился подсчет начала и окончания периода. В каждой строке могут быть пустые ячейки. В каждой строке таких периодов может быть несколько. Пример во вложении.

Т.е. в строке с заполненным "номером" нужно проверить поочерёдно каждую ячейку строки на условие заполнения её числом и если ячейка заполнена то записать её как начало периода в новую ячейку (лучше на новом листе) по формуле: (дата+(7-n)) где n число в заполненной ячейке,дата-в первой строке таблицы, 7 - количество дней недели, если после этой ячейки идет не пустая ячейка (означает что период непрерывный, продолжается на на следующей неделе), то суммировать рядом стоящие ячейки для подсчета даты окончания периода, затем записать начало периода ((дата(где было найдено первое число)+m)-1)где m - сумма подряд заполненных ячеек, дата-в первой строке столбца (где было найдено первое число периода),"-1"- для подсчета точного окончания периода. Надеюсь не запутал объяснением.

Желательно перенос этих периодов с указанием "номера", по которому проводился подсчет, на новый лист, пример тоже во вложении (лист 2).

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

И если это можно сделать функциями тоже будет хорошо

Во вложении жёлтым выделен пример результата (он не автоматизирован)

Спасибо огромное за помощь.
Неужели никто не знает как это реализовать?
 
вы полагаете, что сумма не пустых ячеек будет отличаться  от суммы тех же ячеек вместе с пустыми?
понимаете если к Х прибавить 0 получиться Х. таковы суровые правила математики (и Excel при суммировании всякой ерунды, которая не суммируется)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Нет, я полагаю совсем иначе. Если бы было необходимо получить сумму ячеек всей строки, с пустыми и не пустыми ячейками, то да X+0=X. В данном случае нужно другое. Если посмотреть вложение, должно стать понятнее, конечно если есть желание помочь.
 
Доброе время суток
Цитата
masjob написал:
конечно если есть желание помочь.
Желанию помочь очень помогает желание объяснить :)  Но вы почему считаете, объяснять - это как бы не столь обязательно... Файл посмотрел - не понял.
 
Прошу прощения. Коряво объясняю. :)

В строке есть не пустые ячейки (означающие количество свободных дней на одной неделе). Также в строке могут быть пустые ячейки. Пример заполнения указан во вложении (в любой строке, где заполнен столбец "номер" на первом листе).

Необходимо: на втором листе получить заполненный столбец "номер", стобец начало периода и конец периода.

Количество строк, с заполненной ячейкой "номер", зависит от количества периодов.

Что такое периоды: если в строке (с заполненным номером) будет найдена не пустая ячейка, то на втором листе необходимо заполнить ячейку "номер" (скопировав с первого листа), затем заполнить ячейку "начало периода" (как посчитать описывал выше). Затем необходимо проверить, есть ли после первой заполненной ячейки ещё одна заполненная (т.е. та которая стоит сразу после первой заполненной ячейки), если есть то суммировать (каким образом описывал выше), если после первой заполненной ячейки (или после заполненной рядом стоящей ячейки) будет находиться пустая ячейка, то необходимо на втором листе заполнить ячейку "дата окончания периода" (как это посчитать описывал выше). И так далее пока строка не закончится.
т.о. в строке, с заполненной ячейкой "номер", нужно проверить не пустые ячейки (группы ячеек) как отдельные периоды. И записать эти периоды отдельной строкой привязав к "номеру".
Далее уже переходить к строке со следующим номером.

У каждого "номера" на листе 1, есть заполненные ячейки (числа), их нужно перенести на второй лист (прежде посчитать).

ПОЯСНЕНИЕ
Т.е. если взять например одну строку: в строке листа 1 (в которой заполнена ячейка столбца "номер") отдельно стоящая заполненная ячейка (с левой и правой стороны от неё пустые ячейки) это один "период", который на  листе 2 нужно записать отдельной строкой, в этой строке также должна быть заполнена ячейка столбца "номер" (т.е. эта ячейка копируется с листа 1 на лист 2 и далее заполняется период). Далее если в этой строке на листе 1 (под тем же "номером" на первом листе) есть заполненная ячейка (отдельно стоящая), либо группа рядом стоящих заполненных ячеек (две или три подряд стоящие заполненные ячейки) это будет уже второй "период", который также как и первый "период" должен быть заполнен на листе 2 новой строкой с указанием из какой строки (т.е. заполнить ячейку в столбце "номер" на листе 2 и указать период). Пример заполнения указан в примере на листе 2.
Далее переходим к следующей строке на листе 1 где ячейка столбца "номер" заполнена. И проводим заполнение листа 2 по аналогии с первой строкой.

как посчитать начало периода: (дата+(7-n)) где "n" число в заполненной ячейке, "дата" - значение ячейки в первой строке таблицы листа 1 столбца в котором найдена заполненная ячейка, "7" - количество дней недели

как посчитать окончание периода: ((дата(где было найдено первое число)+m)-1), где "m" - сумма подряд заполненных ячеек (если только одна заполненная ячейка то только её значение), "дата" - значение ячейки в первой строке таблицы листа 1 столбца в котором найдена первая заполненная ячейка), "-1"- для подсчета точного окончания периода

Надеюсь сейчас станет понятнее :)

Спасибо  
 
masjob, что бы Вы не говорили, но, отталкиваясь от сформулированного Вами названия темы, Игорь в своём #2 абсолютно прав:  И любой другой человек ответит то же самое: нет разницы - суммировать выборочно или всю строку.
 
Если исходить из названия темы, то да. Но ведь ниже описано подробно, что необходимо сделать. Т.е. прочитав тему, Вы готовы сразу предоставить ответ, не прочитав полное описание.
Заранее прошу прощения, что неосознанно ввёл в заблуждение.  
Изменено: masjob - 07.06.2020 15:02:51
 
Вариант на Power Query.
Господа модераторы, вариант для названия темы:
Транспонирование данных строки номера, содержащей непрерывные диапазоны дат, в таблицу интервалов дат номера.
Изменено: Андрей VG - 07.06.2020 17:00:04
 
А есть ли возможность реализации при помощи макроса?
 
Цитата
masjob написал: Но ведь ниже описано подробно...
Но ведь посетители еще не видят. подробного описания, ориентируются по нзванию и решают, стоит ли терять время на посещение темы. Заходят - а тут не то, что им нужно...
Об этом же четко написано в правилах форума:
Цитата
 2.1. Название темы должно отражать смысл проблемы
 
Цитата
masjob написал:
А есть ли возможность реализации при помощи макроса?
Не вижу никаких блокирующих рисков выполнить решение макросом. Думаю, что вполне может найтись форумчанин, которому будет, как и мне на Power Query, интересно решить эту задачу макросом. Стоит только подождать. Может даже и медведь, вернувшись с пасеки, блеснёт формульным мастерством.
Изменено: Андрей VG - 07.06.2020 19:13:25
 
Цитата
Андрей VG написал:
Может даже и медведь, вернувшись с пасеки
Какие формулы ПОСЛЕ пасеки? ))
Страницы: 1
Наверх