gpt4 book ai didi

excel - 在Excel VBA中提取重复出现的数组的最大值

转载 作者:行者123 更新时间:2023-12-04 20:32:19 27 4
gpt4 key购买 nike

我有一个重复索引的表,如图所示:

我想为每个索引(“Apple”,“Banana”,...)获取每个时间 1/时间 2 的最高值

我的代码如下:

dim i as integer, j as integer
For i=2 to 4
j=2
While Cells(i,6)=Cells(j,2)
if Cells(j,3) > Cells(i,7) then
Cells(i,7) = Cells(j,3)
end if
if Cells(j,4) > Cells(i,8) then
Cells(i,8) = Cells(j,4)
end if
Wend
Next i

所以想法是遍历唯一的名称,然后遍历名称的每次出现并检查它是否大于当前存储的时间。

我知道有一些语法错误,因为每当我运行代码时它不会改变我的工作表,我真的找不到关于如何替换 VBA 中的值的文档。

所以我想知道是否有更简单的方法可以做到这一点,和/或寻求帮助以获得正确的语法。

最佳答案

这可以在没有 VBA 的情况下完全完成。使用您的示例数据,在单元格 J1 中,我使用此公式获取 B 列中唯一名称的数量:

=SUMPRODUCT((B2:B10<>"")/COUNTIF(B2:B10,B2:B10&""))

在单元格 F2 中并向下复制到 F6 是这个公式来提取这些唯一的名称:
=IF(ROW(F1)>$J$1,"",INDEX($B$2:$B$10,MATCH(0,INDEX(COUNTIF(F$1:F1,$B$2:$B$10),),0)))

在单元格 G2 中并向下复制到 H6 是这个公式来提取每个唯一名称的最大时间值:
=IF($F2="","",MAX(INDEX(($B$2:$B$10=$F2)*C$2:C$10,)))

右侧填充的表格(F、G 和 H 列)是结果:

enter image description here

或者,这可以通过数据透视表轻松完成。在 B、C 和 D 列中选择您的原始数据,然后转到插入 -> 数据透视表。我选择将其放在同一个工作表上,但如果愿意,您可以将其放在新的工作表上。然后它会出现询问您的数据透视表字段,如图所示进行设置(请注意,您需要将值从 Count 更改为 Max):

enter image description here

然后你会有一个显示相同结果的数据透视表:

enter image description here

关于excel - 在Excel VBA中提取重复出现的数组的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48175755/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com