Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6757|回复: 9

[已解决]VBA数组求最大值

[复制链接]
发表于 2015-12-8 14:41 | 显示全部楼层 |阅读模式
本帖最后由 numen_cel 于 2015-12-8 15:30 编辑

如A例有几行数据(不清楚几行),现在用VBA把这几行数据处理到一个数组中,再从这个数组中求最大值,请赐教代码,如附件所示
最佳答案
2015-12-8 15:25
俺也是个新手,不过还是建议直接单元格赋值到数组,不用循环,因为觉得麻烦。

VBA数组取最大值.zip (16.43 KB, 下载次数: 4)

VBA数组取最大值.rar

6.54 KB, 下载次数: 7

 楼主| 发表于 2015-12-8 14:51 | 显示全部楼层
本帖最后由 numen_cel 于 2015-12-8 14:55 编辑

下面这个代码max_sz取到的是最后值3,不是最大值100?

Sub sz()
Dim sz(20)
Dim arr

Set s1 = ThisWorkbook.Worksheets("Sheet1")

s1_r = s1.Cells.SpecialCells(xlCellTypeLastCell).Row

'B列数据处理成数组
For x = 2 To s1_r
    sz(arr) = s1.Cells(x, 2)
Next

max_sz = Application.WorksheetFunction.Max(sz(arr))
End Sub
回复

使用道具 举报

发表于 2015-12-8 14:54 | 显示全部楼层
  1. Sub 数组最值()
  2. Dim arr, brr
  3. Dim m&, n&
  4. m = Cells(Rows.Count, "A").End(xlUp).Row
  5. n = Cells(Rows.Count, "B").End(xlUp).Row
  6. arr = Range("a2:a" & m)
  7. brr = Range("b2:b" & n)
  8. [c1] = WorksheetFunction.Max(arr)
  9. [d1] = WorksheetFunction.Max(brr)
  10. End Sub
复制代码
VBA数组取最大值.zip (12.61 KB, 下载次数: 2)
回复

使用道具 举报

 楼主| 发表于 2015-12-8 14:57 | 显示全部楼层
yeminqiang 发表于 2015-12-8 14:54

为什么我上面的代码取不到数组中最大值?
回复

使用道具 举报

发表于 2015-12-8 15:19 | 显示全部楼层
numen_cel 发表于 2015-12-8 14:57
为什么我上面的代码取不到数组中最大值?

For x = 2 To s1_r
    sz(arr) = s1.Cells(x, 2)
Next

因为sz(arr) 只有B列最后一个数字3,有且只有一个
回复

使用道具 举报

发表于 2015-12-8 15:22 | 显示全部楼层
  1. Sub sz()

  2. Dim arr

  3. Set s1 = ThisWorkbook.Worksheets("Sheet1")

  4. s1_r = s1.Cells.SpecialCells(xlCellTypeLastCell).Row
  5. ReDim arr(1 To s1_r, 1 To 1)

  6. 'B列数据处理成数组
  7. For x = 2 To s1_r
  8. k = k + 1
  9.     arr(k, 1) = s1.Cells(x, 2)
  10. Next

  11. max_sz = Application.WorksheetFunction.Max(arr)
  12. MsgBox max_sz
  13. End Sub
复制代码
改成这样试一试
回复

使用道具 举报

发表于 2015-12-8 15:25 | 显示全部楼层    本楼为最佳答案   
俺也是个新手,不过还是建议直接单元格赋值到数组,不用循环,因为觉得麻烦。

VBA数组取最大值.zip (16.43 KB, 下载次数: 4)
回复

使用道具 举报

 楼主| 发表于 2015-12-8 15:28 | 显示全部楼层
yeminqiang 发表于 2015-12-8 15:22
改成这样试一试

谢谢老师,可以了。。。我对数组一直搞不太清楚。
回复

使用道具 举报

发表于 2015-12-8 15:31 | 显示全部楼层
numen_cel 发表于 2015-12-8 15:28
谢谢老师,可以了。。。我对数组一直搞不太清楚。

你原来的代码,用F8就看得一清二楚了。你可以试试看的。
回复

使用道具 举报

 楼主| 发表于 2015-12-8 15:49 | 显示全部楼层
yeminqiang 发表于 2015-12-8 15:31
你原来的代码,用F8就看得一清二楚了。你可以试试看的。

那个冒泡排序今天中午看了一下书籍,没来得及去学。。。。。谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 03:39 , Processed in 0.535810 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表