首页 > 解决方案 > 我需要使用 VBA 将单元格拉入数据结构以根据 2 个单独的值使用

问题描述

我在 Excel 的电子表格中有 4 列。3 列是文本,1 列是整数。我需要根据文本列中的值从整数列中提取所有值,以便我可以对它们进行大量计算。

例如,我需要“Count”的所有值,其中 Type 列中的值为“Apple”,Quality 列中的值为“Fresh”,Owner 中的值为“Jones”。

然后我可以计算出琼斯每个月平均吃的新鲜苹果的数量,他在任何一个月里吃的最多,在任何一个月里吃的最少。

我没有在 VBA 中找到 averageifs、maxifs 和 minifs 函数,或者我会使用它们。

任何方向都会受到赞赏,因为我一直在努力解决这个问题并尝试不同的解决方案而没有任何工作甚至是轻微的。

请注意,行数会因一次运行而异,但我计算了最后一行,如果这有所不同的话。

标签: excelvba

解决方案


您可能会发现AverageIfs等使用Application.WorksheetFunction.AverageIfs. 因此,您的代码最终可能是这样的:

Dim ws as worksheet
set ws = ThisWorkbook.Worksheets("Sheet1")

Dim avgRange as Range
dim FirstRow as integer
dim LastRow as Long

with ws
    Set avgRange = Cells((FirstRow, Count), (LastRow, Count))
    Set criteriaRange = Cells((FirstRow, Owner), (LastRow, Owner))
    Criteria1 = "John"
    Criteria2 = "Fresh"

     .Range("A5").Application.WorksheetFunction.AverageIfs(avgRange, criteriaRange, Criteria1, Criteria2)
end With

推荐阅读