Я был в состоянии получить эту работу следующим:
1) Создайте три листа, один для клиентов, один для покупок, и один для purchasesforclient.
2) Создайте макрос для копирования отфильтрованных значений в новый лист:
Sub Purchases()
Dim Rng As Range
Set Rng = Worksheets("Comments").Columns("A")
Set Rng = Rng.Resize(65535, 1).Offset(1, 0)
Set Rng = Rng.Resize(, 5).SpecialCells(xlCellTypeVisible)
Rng.Copy Worksheets("PurchasesforClient").Range("A2")
End Sub
3) Когда я обновляю покупки через фильтр, я запустить макрос на шаге 2, создавая субтотальное поле и запуск макрос следующим образом. Поскольку это формула, для этого требуется расчет. Это встроенное в покупках листе, как VBA, где фильтрация происходит, когда В23 является субтотальным полем, которое меняется, когда он подсчитывает количество элементов, как только применяется фильтр:
Public CurrentValue As Double
Private Sub Worksheet_Activate()
CurrentValue = Application.WorksheetFunction.Sum(ActiveSheet.Range("B23"))
End Sub
Private Sub Worksheet_Calculate()
If Application.WorksheetFunction.Sum(Range("B23")) <> CurrentValue Then Purchases
End Sub
4) Я использую теперь фильтруюсь значения на листе shoppingforclient для моей формулы index/match на листе клиентов. Это позволяет мне динамически фильтровать по дате, типу покупки и т. Д. И обновлять информацию на листе клиентов.
= INDEX (Table_owssvr__1 [MyValues], MATCH ([@ [ID]], Table_owssvr__1 [ID], 0)) – Kode
нажмите кнопку редактирования и положить, что в вопросе – whytheq
Я думаю, что путь преуспеть формулы получить данные из скрыты области умнее, а не наоборот. Это означает, что мы можем скрыть наши разработки и все еще иметь формулы, которые ссылаются на эти скрытые области. – whytheq