Excel精英培训网

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

[已解决]神人在哪里?请为大家谋福利啊

[复制链接]
发表于 2015-5-23 18:48 | 显示全部楼层 |阅读模式
神一般的人儿,这是个新问题,如何可以找出表格中的最值。但是现在涉及到个新的棘手的问题,再确定最值后并确定最大值的地址,后输出相应的最值及相应其他值。具体要求上传文件里有,还请大家来看看解答!
最佳答案
2015-5-24 06:31
  1. Sub Macro1()
  2. On Error Resume Next
  3. Dim i&, j%, k%, zf$, d, d2, d3
  4. Set wd = CreateObject("Word.Application")
  5. Set d = CreateObject("scripting.dictionary")
  6. Set d2 = CreateObject("scripting.dictionary")
  7. Set d3 = CreateObject("scripting.dictionary")
  8. s = 2
  9. With wd.Documents.Open(ThisWorkbook.Path & "\新数据.doc")
  10.     For k = 1 To .Tables.Count
  11.         If Application.Clean(.Tables(k).Cell(1, 1).Range) Like "*环境温度*" Then
  12.             s = s + 1
  13.             Cells(s, 1) = s - 2
  14.             For i = 6 To .Tables(k).Rows.Count
  15.                 zf = Application.Clean(.Tables(k).Cell(i, 5).Range)
  16.                 For j = 7 To 11
  17.                     x = Val(Application.Clean(.Tables(k).Cell(i, j).Range))
  18.                     If zf = "E" Then d(x) = i
  19.                     If zf = "Seq" Then d2(x) = ""
  20.                     If zf = "H" Then d3(x) = ""
  21.                 Next
  22.             Next
  23.             Cells(s, 2) = Application.Max(d.keys)
  24.             Cells(s, 3) = Application.Min(d.keys)
  25.             Cells(s, 4) = Application.Max(d2.keys)
  26.             Cells(s, 5) = Application.Min(d2.keys)
  27.             Cells(s, 6) = Application.Max(d3.keys)
  28.             Cells(s, 7) = Application.Min(d3.keys)
  29.             n = d(Application.Max(d.keys))
  30.             Cells(s, 8) = Application.Clean(.Tables(k).Cell(n, 2).Range)
  31.             Cells(s, 9) = Application.Clean(.Tables(k).Cell(n, 3).Range)
  32.             Cells(s, 10) = Application.Clean(.Tables(k).Cell(n, 4).Range)
  33.             d.RemoveAll: d2.RemoveAll: d3.RemoveAll
  34.         End If
  35.     Next
  36.     .Close False
  37. End With
  38. wd.Quit
  39. End Sub
复制代码

新数据.rar

35.12 KB, 下载次数: 25

发表于 2015-5-23 21:00 | 显示全部楼层
没看 懂楼主的结果是哪来的,建议解释下备注的话的意思
回复

使用道具 举报

 楼主| 发表于 2015-5-23 22:17 | 显示全部楼层
gdpgdp317 发表于 2015-5-23 21:00
没看 懂楼主的结果是哪来的,建议解释下备注的话的意思

解释:EXCEL中表1,E的最大值为1.27,最小值1.23来源于表1计算值一栏,Seq与H的取值方法也是这样。水平、 垂直值来源仅仅参照E的最大值1.27所在行对应 5.8,10.3。其他同表1

点评

参考附件,建议重新模拟结果  发表于 2015-5-23 23:35
回复

使用道具 举报

 楼主| 发表于 2015-5-23 23:44 | 显示全部楼层
1261181315a 发表于 2015-5-23 22:17
解释:EXCEL中表1,E的最大值为1.27,最小值1.23来源于表1计算值一栏,Seq与H的取值方法也是这样。水平、  ...

额,地址不会找啊?
回复

使用道具 举报

 楼主| 发表于 2015-5-23 23:45 | 显示全部楼层
1261181315a 发表于 2015-5-23 23:44
额,地址不会找啊?

哪个附件啊?
回复

使用道具 举报

发表于 2015-5-24 06:31 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. On Error Resume Next
  3. Dim i&, j%, k%, zf$, d, d2, d3
  4. Set wd = CreateObject("Word.Application")
  5. Set d = CreateObject("scripting.dictionary")
  6. Set d2 = CreateObject("scripting.dictionary")
  7. Set d3 = CreateObject("scripting.dictionary")
  8. s = 2
  9. With wd.Documents.Open(ThisWorkbook.Path & "\新数据.doc")
  10.     For k = 1 To .Tables.Count
  11.         If Application.Clean(.Tables(k).Cell(1, 1).Range) Like "*环境温度*" Then
  12.             s = s + 1
  13.             Cells(s, 1) = s - 2
  14.             For i = 6 To .Tables(k).Rows.Count
  15.                 zf = Application.Clean(.Tables(k).Cell(i, 5).Range)
  16.                 For j = 7 To 11
  17.                     x = Val(Application.Clean(.Tables(k).Cell(i, j).Range))
  18.                     If zf = "E" Then d(x) = i
  19.                     If zf = "Seq" Then d2(x) = ""
  20.                     If zf = "H" Then d3(x) = ""
  21.                 Next
  22.             Next
  23.             Cells(s, 2) = Application.Max(d.keys)
  24.             Cells(s, 3) = Application.Min(d.keys)
  25.             Cells(s, 4) = Application.Max(d2.keys)
  26.             Cells(s, 5) = Application.Min(d2.keys)
  27.             Cells(s, 6) = Application.Max(d3.keys)
  28.             Cells(s, 7) = Application.Min(d3.keys)
  29.             n = d(Application.Max(d.keys))
  30.             Cells(s, 8) = Application.Clean(.Tables(k).Cell(n, 2).Range)
  31.             Cells(s, 9) = Application.Clean(.Tables(k).Cell(n, 3).Range)
  32.             Cells(s, 10) = Application.Clean(.Tables(k).Cell(n, 4).Range)
  33.             d.RemoveAll: d2.RemoveAll: d3.RemoveAll
  34.         End If
  35.     Next
  36.     .Close False
  37. End With
  38. wd.Quit
  39. End Sub
复制代码
回复

使用道具 举报

发表于 2015-5-24 06:32 | 显示全部楼层
对比一下结果

新数据.zip

27.35 KB, 下载次数: 10

回复

使用道具 举报

发表于 2015-5-25 15:33 | 显示全部楼层
本帖最后由 dsmch 于 2015-5-25 15:39 编辑

得到答案不置可否的人,成了神一般的人儿了
回复

使用道具 举报

发表于 2015-5-25 16:15 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-5-25 20:46 | 显示全部楼层
dsmch 发表于 2015-5-25 15:33
得到答案不置可否的人,成了神一般的人儿了

抱歉,出差去了。今天回来结合您的代码试了,能得到需要的数据。这个太博大精深了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 10:05 , Processed in 0.842145 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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