Можно ли сделать значение ячейки равным применяемому фильтру?

У меня есть столбец с данными, как: 001.1, 002.1, 003.1 ... (У меня есть 100 строк) Мне нужно, чтобы ячейка L1 (например) была равна выбранному фильтру этого столбца.

Так что если я фильтрую 002.1, то L1 = 002.1

Как я могу достичь этого, пожалуйста, проще, чем это?

Sub filtr()
If ActiveWorkbook.SlicerCaches("Průřez_Lokace").SlicerItems("001.1").Selected = True Then
    Range("L1") = "001.1"
    Else
        If ActiveWorkbook.SlicerCaches("Průřez_Lokace").SlicerItems("002.1").Selected = True Then
            Range("L1") = "002.1"
        End If
End If
End Sub

Или может быть как то так?

For i = 1 To 120
    If ActiveWorkbook.SlicerCaches("Prùøez_Lokace").SlicerItems(""00" & i & ".1"").Selected = True Then
        Range("L1") = "00" & i & ".1"
    End If
Next i

Или как то так?

For i = 1 To 9
    x = "00" & i & ".1"
    If ActiveWorkbook.SlicerCaches("Prùøez_Lokace").SlicerItems(x).Selected = True Then
        Range("L1") = x
    End If
Next i

К сожалению, первый (самый сложный), конечно, работает, а два других - нет.

2 ответа2

0

Вот супер простой пример:

  • один столбец
  • один критерий
  • автофильтр


Если пользователь устанавливает автофильтр для отображения Роберта и запускает этот макрос:

Sub dural()
    Dim rng As Range, r As Range, i As Integer
    Set rng = Range("A:A").Cells.SpecialCells(xlCellTypeVisible)
    i = 0
    For Each r In rng
        If i = 1 Then
            Range("B1").Value = r.Value
            Exit Sub
        End If
        i = i + 1
    Next r
End Sub

Затем Роберт будет помещен в камеру B1. Это использует тот факт, что то, что отображается в столбце А (кроме заголовка), соответствует критерию.

0

Вот начало:https://www.mrexcel.com/forum/excel-questions/591287-start-macro-when-changing-value-slicer.html

Используйте этот саб в вашей книге:

Private Sub Workbook_SheetPivotTableChangeSync(ByVal Sh As Object, ByVal Target As PivotTable)
    'your macro
End Sub

Я немного поиграл с этим (вставил в msgbox всплывающее окно при каждом нажатии кнопки слайсера), но это должно быть более элегантно, так как вам не нужно запускать VBA каждый раз после нажатия на кнопку слайсера ,

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