• Как посчитать сколько было непрерывно пустых ячеек в диапазоне?

    Geleoss
    @Geleoss
    Любитель таблиц
    =SCAN(;C:C; LAMBDA(acc; cur; if(cur<>"";;acc+1 )))
    Пример
    66ed5acbb9da7956194533.png
    Ответ написан
    Комментировать
  • Как организовать множественное залипание заголовков таблиц?

    grantur5707
    @grantur5707
    Full Stack Web Developer
    Закрепить заголовки сразу нескольких таблиц при прокрутке не получится, но вы можете разделить 2 таблицы соответственно на 2 разных листа и для каждого сделать закрепление области (Вид -> Закрепить области):

    66ebf73d4549c482452538.png
    Ответ написан
    Комментировать
  • Как скорректировать условия в Excel для отображения возможности заполнения ячейки?

    @kerzhaev
    Для решения вашей задачи в Excel можно использовать комбинацию функций "Проверка данных" и условного форматирования для того, чтобы вторая строка была активной или неактивной в зависимости от значения первой строки.

    1. Проверка данных для первой строки (Да/Нет):
    - Выберите ячейку во второй строке (например, для примера это будет ячейка B2).
    - Перейдите на вкладку «Данные» → «Проверка данных».
    - В открывшемся окне в разделе «Тип данных» выберите «Список».
    - В поле «Источник» введите: `да,нет`.
    - Теперь в этой ячейке будет возможность выбрать значения «Да» или «Нет».

    2. Условная проверка для активации второй строки:
    Для того чтобы вторая строка была активна, если в первой строке стоит «Да», и неактивна, если стоит «Нет», потребуется использование условной проверки данных.

    Например, для ячейки C2 (второй строки):
    - Выделите ячейку C2 и снова перейдите на вкладку «Данные» → «Проверка данных».
    - В разделе «Тип данных» выберите «Список».
    - В поле «Источник» введите следующую формулу:

    =ЕСЛИ(B2="да"; список_значений; "")

    Где `список_значений` — это диапазон на вашем скрытом листе, который содержит данные для заполнения.

    3. Условное форматирование для отключения/активации ячеек:
    Чтобы визуально указать, что ячейка активна или неактивна, можно применить условное форматирование.
    - Выделите диапазон (например, C2:E2), затем перейдите на вкладку «Главная» → «Условное форматирование» → «Создать правило».
    - Выберите правило на основе формулы. Введите следующую формулу:

    =B2="нет"

    - Установите форматирование, которое делает текст в ячейке светлее или устанавливает другой цвет заливки, чтобы показать, что ячейка неактивна.

    Таким образом, если в первой строке стоит «Нет», вторая строка будет выглядеть неактивной, и данные в ней не смогут быть выбраны.
    Ответ написан
    4 комментария
  • Как динамически скрывать строки?

    @coi175 Автор вопроса
    Отвечаю сам себе, не знаю чем вызвано такое поведение, но никак не смог сделать через фильтры, даже с VBA, ощущение что EXCEL смотрит нижнюю и верхнюю дату и по ним фильтрует, а если они вразнобой, фиг. Написал следующие VBA:
    Сам метод скрытия строк по условию, лежит в модуле. (даты лежат в B1 и B2):
    Sub ApplyDateFilter(ws As Worksheet)
        Dim startDate As Date, endDate As Date
        Dim lastRow As Long
        ' Get the start and end dates from cells B1 and B2
        startDate = ws.Range("B1").Value
        endDate = ws.Range("B2").Value
    
        ' Determine the last row with data in column A (assumes dates are in column A)
        lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
        ' Remove any existing filters
        If ws.AutoFilterMode Then ws.AutoFilterMode = False
        
        ' Unhide all rows first to avoid hidden rows interfering with the filter
        ws.Rows.Hidden = False
    
        ' Loop through each row and hide those not in the date range or that do not match the status
        For Each cell In ws.Range("A6:A" & lastRow + 1) ' Assuming data starts in row 2
            If IsDate(cell.Value) Then
                If cell.Value < startDate Or cell.Value > endDate Then
                    cell.EntireRow.Hidden = True
                End If
            End If
        Next cell
    End Sub


    В самой книге, ставим при открытии файла даты на начало - конец текущего месяца:
    Private Sub Workbook_Open()
        Dim ws As Worksheet
        Set ws = Лист1
    
        ' Set the start and end dates for the current month in cells B1 and B2
        ws.Range("B1").Value = DateSerial(Year(Date), Month(Date), 1)
        ws.Range("B2").Value = DateSerial(Year(Date), Month(Date) + 1, 0)
    
        ' Apply the initial filter based on these dates
        ApplyDateFilter ws
    End Sub

    И на листе, чтобы при изменении дат снова крутился фильтр:
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Me.Range("B1:B2")) Is Nothing Then
            ApplyDateFilter Me
        End If
    End Sub
    
    Private Sub Worksheet_Activate()
        ' Ensure filter is applied when the sheet is activated
        ApplyDateFilter Me
    End Sub
    Ответ написан
    1 комментарий