【发布时间】:2023-04-02 06:08:01
【问题描述】:
我有 2 列。一个带有名称,A 列,(COV,COSV,ETA ...),第二个带有数字。我在 A 列中有大约 40000 行和 30 个 dirrerent 名称。我在另一张表中有 A 列中所有不同的名称。
我想计算 A 列中每个名称的平均结果、最小值和最大值。因此,例如每个 COV 的 B 列中所有数字的平均结果。
我能够毫无问题地用 VBA 中的行计算平均结果。
WorksheetFunction.AverageIf
但我没有发现任何方法可以为 B 列的最小值和最大值做同样的事情。
编码需要在vba中。
有什么想法吗?
塞巴斯蒂安
这是部分代码
sub delais
Worksheets("delais_moyen").Select
lastrow = Range("C4", Range("C4").End(xlDown)).Rows.Count + 3
Worksheets(message3).Select
lastline = Range("D7", Range("D7").End(xlDown)).Rows.Count + 6
columnlettermin = Split(Cells(1, lastcol).Address, "$")(1)
columnlettermoy = Split(Cells(1, lastcol + 1).Address, "$")(1)
columnlettermax = Split(Cells(1, lastcol + 2).Address, "$")(1)
Worksheets("delais_moyen").Select
For j = 4 To lastrow
Set reponse = Sheets(message2).Range("D7:D" & lastline)
Set delais = Sheets(message2).Range("P7:P" & lastline)
reponsemin = columnlettermin & j
reponsemoy = columnlettermoy & j
reponsemax = columnlettermax & j
Range(columnlettermoy & j) = WorksheetFunction.AverageIf(reponse, Range("C" & j), delais)
next j
end sub
【问题讨论】:
-
听起来您的 Excel 版本不支持 MINIFS 和 MAXIFS?
-
我认为可以,excel 2013,但无法使其工作。有什么好的建议吗?我的 vba 编程水平充其量只是平均水平。
-
MInIf 和 MaxIf 都采用与 AverageIf 相同的参数。向我们展示您的尝试,以便我们了解问题所在。
-
刚刚看了看,minifs 和 maxifs 似乎只能在 excel 2016+ 中访问。很抱歉造成混乱,但我的 excel 是法语的。没有他们的任何想法
-
使用这个数组公式:'=AVERAGE(IF(Sheet1!A:A=A1;Sheet1!B:B)) CTRL+SHIFT+ENTER'。对 MAX 和 MIN 执行相同操作。