【问题标题】:VBA (Excel): Filter array on multiple criteria and find the lowest valueVBA(Excel):根据多个条件过滤数组并找到最小值
【发布时间】:2017-05-16 16:03:24
【问题描述】:

我有两个包含数据的表。第一个包含更多细节的数据,因为它包含更多维度。我需要一种方法来找到 Table1 D 列中的最小值,其中 Criteria1 和 Criteria2 与 A 列和 B 列中的相应值匹配。

例如,对于 Criteria1 = A 和 Criteria2 = F,Table1 中的第 2 行和第 3 行都匹配。 D 列中的最小值 (12) 位于第 3 行。匹配值(本例中为 12)应插入到 Table2 的新列中。

表 1

Column A    Column B    Column C    Column D (Value)
A              F           X         13
A              F           Y         12
B              F           Y         15
B              G           Z         17
B              G           X         12,5

表2

Criteria1   Criteria2
A              F
B              F
B              G

插入最低值的表 2

Criteria1   Criteria2   Lowest Value (new column)
A              F            12
B              F            15
B              G            12,5

我的假设是,这可以通过 INDEX 和 MATCH 的组合来完成,也可以通过高级过滤器来完成。该表是 7000 行,所以不是很大。但是,我需要支持如何解决这个问题,因为它看起来需要一个两步法。

【问题讨论】:

    标签: excel vba search criteria


    【解决方案1】:

    一个函数的伪代码,它在 C 列中查找与 A 列和 B 列通过的条件相对应的最小值。

    Function GetMinValue(criteriumA as String, criteriumB As String) As Long
    
        With Table1Range 'haeders row included
            .Autofilter Field:=1, Criteria1:= criteriumA 
            .Autofilter Field:=2, Criteria1:= criteriumB
            If (condition to check for any filtered Cells) Then GetMinValue=WorksheetFunction.Min(.Columns(4).SpecialCells(onlyVisibleCells))
            removeAutofilter
        End With
    
    End Sub
    

    对于Range 对象的Autofilter ()SpecialCells() 方法,您可以在SO 和Web 中获得大量帮助

    【讨论】:

    • 勇敢的否决者是否愿意解释他投票的原因,并且让我可能增强我的答案并让其他人从他的想法中学习?
    猜你喜欢
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2017-03-13
    • 2023-03-18
    相关资源
    最近更新 更多