У меня есть лист Excel с 15 столбцами, включая столбец даты. Можно ли скопировать на другой лист, который будет отображать только столбцы / данные с сегодняшней датой? Или неделя?

(Сложно прокручивать, чтобы найти данные каждый день, чтобы найти дату.)

1 ответ1

1

Я хотел бы предложить вам два разных метода.

Одним из них является формула массива, а вторым - код VBA для фильтрации записей, совпадающих с текущей датой.

{=IFERROR(INDEX(Sheet1!$A$4:$D$10, SMALL(IF(COUNTIF(Sheet1!$E$4, Sheet1!$A$4:$A$10), ROW(Sheet1!$A$4:$D$10)-MIN(ROW(Sheet1!$A$4:$D$10))+1), ROW(A1)), COLUMN(A1)),"")}

NB:

E4 - ячейка, в которой записана сегодняшняя дата. Завершите формулу с помощью Ctrl+Shift+Enter, затем перетащите вправо до нужных столбцов, а затем вниз.

Если у вас огромный диапазон данных, лучше используйте этот код VBA.

Sub CopyRowWithCurrentDate()

    Dim xRgS As Range, xRgD As Range, xCell As Range
    Dim I As Long, xCol As Long, J As Long
    Dim xVal As Variant

    On Error Resume Next

    Set xRgS = Application.InputBox("Select the Date Column:", "Filter On Date", Selection.Address, , , , , 8)

    If xRgS Is Nothing Then Exit Sub
    Set xRgD = Application.InputBox("Select a destination cell:", "Filter On Date", , , , , , 8)

    If xRgD Is Nothing Then Exit Sub
    xCol = xRgS.Rows.Count
    Set xRgS = xRgS(1)
    Application.CutCopyMode = False

    J = 0
    For I = 1 To xCol
        Set xCell = xRgS.Offset(I - 1, 0)
        xVal = xCell.Value

        If TypeName(xVal) = "Date" And (xVal <> "") And (xVal = Date) Then 'You should manipulate the days you are filtering by typing accurate days!
            xCell.EntireRow.Copy xRgD.Offset(J, 0)
            J = J + 1
        End If

    Next

    Application.CutCopyMode = True

End Sub

Надеюсь, это поможет вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .