|
Макрос для поиска на листе данных, расчёт и перенос результата на другой лист
|
|||
---|---|---|---|
#18+
Здравствуйте. Прошу помощи в написании макроса. В книге на листе 1 есть таблица с данными, столбцы по датам (каждый понедельник года) и столбцы с другой информацией. Необходимо на листе 1 находить поочередно строки с заполненным столбцом "номер". Если такая строка найдена, то необходимо провести с этой строкой действия. В этой строке (в столбцах по датам) будут заполнены некоторые ячейки с числом (число означает количество дней отсутствия в неделе). Эти ячейки могут быть как одна заполненная, так и несколько подряд, (что говорит об отсутствии на промежуток более недели), что одна заполненная ячейка (т.е. слева и справа пустые ячейки), что две( или три подряд) заполненные ячейки подряд (т.е. слева от первой ячейки пусто во 2й заполнено в 3й заполнено в 4й пусто) это период. Т.е. отдельно стоящая ячейка это один период, несколько подряд заполненных ячеек это следующий период. Каждый из этих периодов должен быть записан на лист 2 отдельной строкой. Каким образом: если в строке, в которой столбец "номер" заполнен, и найдена заполненная ячейка ( т.е. "начало периода"), то макрос должен скопировать ячейки этой строки 1,2,3,4,5 столбцов в соответствующую строку листа 2, и заполнить дату начала периода и дату окончания (как заполняется дата окончания описано выше). Далее, если в это строке (которую мы нашли, в которой заполнена ячейка "номер") есть ещё один "период отсутствия" (периодов у каждого "номера" может быть несколько), то на листе 2 заполняем следующую строку по аналогии с первой (т.е. у каждого периода будет своя строка, с одинаковыми данными, но разным периодом). После того, как строка проверена, и "периодов" больше не найдено, переходим к следующей строке, в которой столбец "номер" заполнен. И повторяем действия как с первой строкой. Количество строк, с заполненной ячейкой "номер" на листе, зависит от количества периодов в каждой строке. Т.е. получится: у сотрудника с "номером" есть несколько периодов отсутствия, и каждый этот период должен быть записан на новом листе отдельной строкой. Как посчитать начало периода: (дата+(7-n)) где "n" число в заполненной ячейке, "дата" - значение ячейки в первой строке таблицы листа 1 столбца в котором найдена заполненная ячейка, "7" - количество дней недели Как посчитать окончание периода: ((дата начала периода+m)-1), где "m" - сумма подряд заполненных ячеек (если только одна заполненная ячейка то только её значение), "дата" - значение начала периода, которое ранее выло посчитано, "-1"- для подсчета точного окончания периода Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2020, 22:35 |
|
|
start [/forum/topic.php?fid=61&msg=39966980&tid=2171873]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 139ms |
0 / 0 |