我正在使用索引/匹配来从相关表中获取数据以填充第一个表.在我的相关表中,我已经过滤掉了值,但过滤掉的值仍然填充在我的第一个表中.如果索引/匹配不够智能,只能获取过滤后的值,我该如何解决此问题(首选公式,但VBA可接受)才能获得过滤后的值.
这是我目前的公式:
=INDEX(Table_owssvr__1[MyValues],MATCH([@[ID]],Table_owssvr__1[ID],0))
Run Code Online (Sandbox Code Playgroud)
我已经能够通过以下方式使其工作:
1) 创建三张工作表,一张用于客户,一张用于采购,一张用于客户采购。
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
Run Code Online (Sandbox Code Playgroud)
3) 当我通过过滤器更新购买时,我在步骤 2 中通过创建小计字段并触发宏来运行宏,如下所示。由于它是一个公式,因此需要进行计算。它作为 VBA 嵌入到发生过滤的采购表中,其中 B23 是小计字段,在应用过滤器后计算项目数量时,该字段会发生变化:
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
Run Code Online (Sandbox Code Playgroud)
4) 我使用客户工作表中现在过滤的值作为客户工作表中的索引/匹配公式。这使我能够按日期、购买类型等动态过滤,并在客户工作表中更新信息