Динамически обновлять список на основе другой ячейки, Excel - PullRequest
0 голосов
/ 03 апреля 2019

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

Было бы хорошо иметь это динамически изменяемое (т. Е. Пользователь может изменить свой выбор, и сводная таблица должна автоматически обновляться).

Любая помощь будет принята с благодарностью. С кодом нижеЯ не могу добавить к существующим данным.Оператор ниже не принимает lastRow в качестве параметра.

Sheets("Sheet4").Cells.Copy Destination:=Sheets("Dest").Cells(lastRow, 1) 

Код: это требует большой очистки.Я еще не получил эту работу

Private Sub CommandButton1_Click()
Dim Src As Worksheet, Dest As Worksheet
Dim lastRow As Long, j As Long
Dim CellValue As String
Dim SrcSheets As String
Set Src = ThisWorkbook.Sheets("Sheet3") ' Needs to run through all the sheets. Change the sheet number using a for loop?
Set Dest = ThisWorkbook.Sheets("Dest")

'Clear the entire dest sheet before running the logic
Dest.Cells.ClearContents

'h24 is cell where the total rows are filled
Worksheets("Selection").Range("h24").Value = 0
lastRow = 1 ' this always makes the destination to start from first line, overwriting the existing rows

    If (Worksheets("Selection").Cells(1, 5).Value = True) Then

        Sheets("Sheet3").Cells.Copy Destination:=Sheets("Dest").Cells(1, 1)
        lastRow = Sheets("Sheet3").Cells.SpecialCells(xlLastCell).Row

        Worksheets("Selection").Range("h24").Value = lastRow
    End If

    ' Check if second checkbox is selected
    If (Worksheets("Selection").Cells(2, 5).Value = True) Then
        Sheets("Sheet4").Cells.Copy Destination:=Sheets("Dest").Cells(lastRow, 1)

        lastRow = ThisWorkbook.Sheets("Dest").Cells(Rows.Count, "A").End(xlUp).Row

        Worksheets("Selection").Range("h24").Value = lastRow
    End If
 End Sub
...