Excel精英培训网

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

[已解决]如何快速求出这个最大值?

[复制链接]
发表于 2016-5-6 16:28 | 显示全部楼层 |阅读模式
请教各位高手,要求在附件中。
最佳答案
2016-5-11 22:52
  1. Sub Macro1()
  2. Dim arr, brr, w, d, i&, j%, k%
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range("a2").CurrentRegion
  5. n = UBound(arr)
  6. ReDim brr(1 To n, 1 To 10)
  7. For i = 1 To n
  8.     s = 0
  9.     For j = 1 To 4
  10.         For k = j + 1 To 5
  11.             s = s + 1
  12.             brr(i, s) = Val(Mid(arr(i, 3), j, 1) & Mid(arr(i, 3), k, 1))
  13.         Next
  14.     Next
  15. Next
  16. For j = 1 To 10
  17.     ReDim w(99)
  18.     For i = 1 To n
  19.         w(brr(i, j)) = n - 1 - i
  20.         d(w(brr(i, j))) = brr(i, j)
  21.     Next
  22.     Cells(1001, j + 22) = Application.Max(w)
  23.     Cells(1003, j + 22) = d(Application.Max(w))
  24.     d.RemoveAll
  25. Next
  26. End Sub
复制代码

数据--002.zip

44.82 KB, 下载次数: 24

发表于 2016-5-7 23:28 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, w, i&, j%, k%
  3. arr = Range("a2").CurrentRegion
  4. n = UBound(arr)
  5. ReDim brr(1 To n, 1 To 10)
  6. For i = 1 To n
  7.     s = 0
  8.     For j = 1 To 4
  9.         For k = j + 1 To 5
  10.             s = s + 1
  11.             brr(i, s) = Val(Mid(arr(i, 3), j, 1) & Mid(arr(i, 3), k, 1))
  12.         Next
  13.     Next
  14. Next
  15. For j = 1 To 10
  16.     ReDim w(99)
  17.     For i = 1 To n
  18.         w(brr(i, j)) = n + 1 - i
  19.     Next
  20.     Cells(1001, j + 22) = Application.Max(w)
  21. Next
  22. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
hua221 + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-9 19:33 | 显示全部楼层
万分感谢dsmch老师的帮助,代码太棒了!!!
回复

使用道具 举报

 楼主| 发表于 2016-5-10 23:14 | 显示全部楼层
哪位大神能将 Max(w) 对应的数字也同时写入Cells(1003, j + 22) = Application.Max(w)就更好了!

点评

对应什么数字?用附件说明问题  发表于 2016-5-10 23:19
回复

使用道具 举报

 楼主| 发表于 2016-5-10 23:32 | 显示全部楼层
dsmch高手请看附件,里边有代码。就是要那哪行数字。我觉得你这段代码更好些。请帮忙用你的代码达到表中相同目的。

数据--00888.zip

12.31 KB, 下载次数: 4

点评

没看懂,用一楼附件模拟一下结果  发表于 2016-5-11 09:51
回复

使用道具 举报

 楼主| 发表于 2016-5-11 20:45 | 显示全部楼层
回复dsmch:再次上传一楼附件,内有模拟结果。

数据--0022.zip

46.19 KB, 下载次数: 5

回复

使用道具 举报

发表于 2016-5-11 22:52 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, brr, w, d, i&, j%, k%
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range("a2").CurrentRegion
  5. n = UBound(arr)
  6. ReDim brr(1 To n, 1 To 10)
  7. For i = 1 To n
  8.     s = 0
  9.     For j = 1 To 4
  10.         For k = j + 1 To 5
  11.             s = s + 1
  12.             brr(i, s) = Val(Mid(arr(i, 3), j, 1) & Mid(arr(i, 3), k, 1))
  13.         Next
  14.     Next
  15. Next
  16. For j = 1 To 10
  17.     ReDim w(99)
  18.     For i = 1 To n
  19.         w(brr(i, j)) = n - 1 - i
  20.         d(w(brr(i, j))) = brr(i, j)
  21.     Next
  22.     Cells(1001, j + 22) = Application.Max(w)
  23.     Cells(1003, j + 22) = d(Application.Max(w))
  24.     d.RemoveAll
  25. Next
  26. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
hua221 + 1 很给力!可惜系统只准评1分

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:35 , Processed in 0.609179 second(s), 19 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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