Здравствуйте!У меня таблица такого типа как во вложенном файле. И нужно что бы при заполнении полей "дата начала" и "дата окончания" соответствующие ячейки с датой начала и окончания недели, закрашивались. На фото таблица с закрашенными вручную ячейками, а нужно это автоматизировать. Нужно что бы то что сейчас закрашено зеленым, закрашивалось автоматически. Все что я пока что смогла найти в интернете это условное форматирование если я разобью таблицу не недели, а на дни. Мне такой объем таблицы не подходит. Посоветуйте, пожалуйста, как решить эту проблему.
Здравствуйте!У меня таблица такого типа как во вложенном файле. И нужно что бы при заполнении полей "дата начала" и "дата окончания" соответствующие ячейки с датой начала и окончания недели, закрашивались. На фото таблица с закрашенными вручную ячейками, а нужно это автоматизировать. Нужно что бы то что сейчас закрашено зеленым, закрашивалось автоматически. Все что я пока что смогла найти в интернете это условное форматирование если я разобью таблицу не недели, а на дни. Мне такой объем таблицы не подходит. Посоветуйте, пожалуйста, как решить эту проблему.Zhuzha
Zhuzha, Можно было бы как то поВанговать по вашей картинке, это же типичная задача для УФ, вот только структура данных в строке 2 вашего скрина не очень понятна , так что найдите возможность приложить пример с пояснениями.
Zhuzha, Можно было бы как то поВанговать по вашей картинке, это же типичная задача для УФ, вот только структура данных в строке 2 вашего скрина не очень понятна , так что найдите возможность приложить пример с пояснениями.i691198
Сообщение отредактировал i691198 - Суббота, 25.02.2023, 16:51
Zhuzha, Забейте в поиске "диаграмма Ганта" ТУТ - Alex_ST дает ссылку на буржуйский сайт, там есть файл с примером Несколько ссылок на параллельный сайт, может какая подойдет ТУТ, ТУТ, ТУТ, ТУТ и ТУТ
Zhuzha, Забейте в поиске "диаграмма Ганта" ТУТ - Alex_ST дает ссылку на буржуйский сайт, там есть файл с примером Несколько ссылок на параллельный сайт, может какая подойдет ТУТ, ТУТ, ТУТ, ТУТ и ТУТmsi2102
Сообщение отредактировал msi2102 - Суббота, 25.02.2023, 17:58
msi2102, я уже все с диаграммами Ганта пересмотрела, ничего не нашла нужного. Только если разбивать ее не на недели , а на дни. Но я не могу пользоваться таблицей в которой будет 370 столбцов.
msi2102, я уже все с диаграммами Ганта пересмотрела, ничего не нашла нужного. Только если разбивать ее не на недели , а на дни. Но я не могу пользоваться таблицей в которой будет 370 столбцов.Zhuzha
i691198, во второй строке: столбец-этапы: у меня есть разнообразные этапы, условно обозначенные 1,2,3, их очень много, более 1000. У каждого этапа есть дата начала и дата конца. Далее таблица разбита на недели. В разноцветных столбиках -неделя (1 неделя 02.01-08.01, 2 неделя 09.01.-15.01. и т.д. до конца года.)
i691198, во второй строке: столбец-этапы: у меня есть разнообразные этапы, условно обозначенные 1,2,3, их очень много, более 1000. У каждого этапа есть дата начала и дата конца. Далее таблица разбита на недели. В разноцветных столбиках -неделя (1 неделя 02.01-08.01, 2 неделя 09.01.-15.01. и т.д. до конца года.)Zhuzha
Но я не могу пользоваться таблицей в которой будет 370 столбцов.
Можете скрыть ненужные столбцы макросом, например оставить только Пн или Вт, а по необходимости их разворачивать. Или неплохое решение с буржуйского сайта, там установлена полоса прокрутки и недели смещаются при смещении ползунка или выбора номера недели в ячейке. Или можете разбить шкалу не по дням, а по неделям
Но я не могу пользоваться таблицей в которой будет 370 столбцов.
Можете скрыть ненужные столбцы макросом, например оставить только Пн или Вт, а по необходимости их разворачивать. Или неплохое решение с буржуйского сайта, там установлена полоса прокрутки и недели смещаются при смещении ползунка или выбора номера недели в ячейке. Или можете разбить шкалу не по дням, а по неделямmsi2102
msi2102, у меня таблица разбита на недели. Верхняя строка -разноцветная. Там недели. Я не могу скачанные варианты использовать. Я могу только сама ее сделать.
msi2102, у меня таблица разбита на недели. Верхняя строка -разноцветная. Там недели. Я не могу скачанные варианты использовать. Я могу только сама ее сделать.Zhuzha
Вот Вам два варианта, первый с разбивкой на недели, второй по дням. В первом варианте формула для условного форматирования:
Код
=НЕ(ИЛИ(И($B3<D$1;$C3<D$1);И($B3>E$1;$C3>E$1)))
или можно более короткой
Код
=НЕ(ИЛИ($C3<D$1;$B3>E$1))
Во втором варианте, две кнопки, первая скрывает все столбцы кроме столбцов начала и конца периода, вторая разворачивает все столбцы, что бы бало понятнее поставьте периоды без пересечения дат. Формула для условного форматирования
Код
=И(D$1>=$B3;D$1<=$C3)
Макрос для скрытия столбцов [vba]
Код
Sub Макрос1() Dim col_1 As Range, m As Integer, n As Integer, arr1 As Variant, arr2 As Variant Columns("C:NE").Hidden = False arr1 = Range("B3:C" & Cells(Rows.Count, 2).End(xlUp).Row) arr2 = Range(Cells(1, 4), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)) Set al = CreateObject("System.Collections.ArrayList") For n = 1 To UBound(arr1) For m = 1 To UBound(arr1, 2) If Not al.Contains(CDate(arr1(n, m))) Then al.Add CDate(arr1(n, m)) Next Next For n = 1 To UBound(arr2, 2) If Not al.Contains(CDate(arr2(1, n))) Then If col_1 Is Nothing Then Set col_1 = Columns(n + 3) Else Set col_1 = Union(col_1, Columns(n + 3)) End If Next If Not col_1 Is Nothing Then col_1.EntireColumn.Hidden = True: Set col_1 = Nothing End Sub
Вот Вам два варианта, первый с разбивкой на недели, второй по дням. В первом варианте формула для условного форматирования:
Код
=НЕ(ИЛИ(И($B3<D$1;$C3<D$1);И($B3>E$1;$C3>E$1)))
или можно более короткой
Код
=НЕ(ИЛИ($C3<D$1;$B3>E$1))
Во втором варианте, две кнопки, первая скрывает все столбцы кроме столбцов начала и конца периода, вторая разворачивает все столбцы, что бы бало понятнее поставьте периоды без пересечения дат. Формула для условного форматирования
Код
=И(D$1>=$B3;D$1<=$C3)
Макрос для скрытия столбцов [vba]
Код
Sub Макрос1() Dim col_1 As Range, m As Integer, n As Integer, arr1 As Variant, arr2 As Variant Columns("C:NE").Hidden = False arr1 = Range("B3:C" & Cells(Rows.Count, 2).End(xlUp).Row) arr2 = Range(Cells(1, 4), Cells(1, Cells(1, Columns.Count).End(xlToLeft).Column)) Set al = CreateObject("System.Collections.ArrayList") For n = 1 To UBound(arr1) For m = 1 To UBound(arr1, 2) If Not al.Contains(CDate(arr1(n, m))) Then al.Add CDate(arr1(n, m)) Next Next For n = 1 To UBound(arr2, 2) If Not al.Contains(CDate(arr2(1, n))) Then If col_1 Is Nothing Then Set col_1 = Columns(n + 3) Else Set col_1 = Union(col_1, Columns(n + 3)) End If Next If Not col_1 Is Nothing Then col_1.EntireColumn.Hidden = True: Set col_1 = Nothing End Sub
msi2102, спасибо, попробую. Правда не уверена что мне это подходит. Скажите, пожалуйста, а нельзя как-то задать условие что бы, например, дата начала вкладывалась именно в диапазон недели , то есть через одн ячейку (дата начала-дата конца недели)? Со скрытыми столбцами мне скорее всего вариант не подойдет, этап может начинаться с любой день недели, при этом этапы не идут в строгой последовательности . То есть этап 10, например, может начаться сразу после 3 этапа, а закончится после 15.
msi2102, спасибо, попробую. Правда не уверена что мне это подходит. Скажите, пожалуйста, а нельзя как-то задать условие что бы, например, дата начала вкладывалась именно в диапазон недели , то есть через одн ячейку (дата начала-дата конца недели)? Со скрытыми столбцами мне скорее всего вариант не подойдет, этап может начинаться с любой день недели, при этом этапы не идут в строгой последовательности . То есть этап 10, например, может начаться сразу после 3 этапа, а закончится после 15.Zhuzha
Zhuzha, Посмотрите такой вариант, просто вписывайте в строки даты начала и окончания. Последовательность дат в строках 2 и 3 регулярная по неделям, так что можно просто протянуть насколько нужно.
Zhuzha, Посмотрите такой вариант, просто вписывайте в строки даты начала и окончания. Последовательность дат в строках 2 и 3 регулярная по неделям, так что можно просто протянуть насколько нужно.i691198