Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 13895003572

[已解决]求助公式

[复制链接]
 楼主| 发表于 2015-3-27 10:18 | 显示全部楼层
心正意诚身修 发表于 2015-3-27 10:02
G列的數字和H列的數字.G列的是3,它第一次出現是在A列,H列是11,它出現在第8列,8-1差了7列,就是這樣得出來的 ...

3.11是一组合,要两数字同时出现
回复

使用道具 举报

发表于 2015-3-27 10:18 | 显示全部楼层
心正意诚身修 发表于 2015-3-27 10:02
G列的數字和H列的數字.G列的是3,它第一次出現是在A列,H列是11,它出現在第8列,8-1差了7列,就是這樣得出來的 ...

要求是“在A:F范围内出现的行与行间隔数”
这里不包含H列,而且是行间距离,不是列间距离。


回复

使用道具 举报

发表于 2015-3-27 10:20 | 显示全部楼层
是max(含3的行间隔最大数,含7的行间隔最大数)  还是 同时含3含11的行间隔最大数  ?
回复

使用道具 举报

发表于 2015-3-27 10:26 | 显示全部楼层
前者是这样
  1. Sub tt()
  2.     arr = Range("a1:f" & [a65536].End(3).Row)
  3.     a = [g1]: b = [h1]
  4.     Set d = CreateObject("scripting.dictionary")
  5.     For i = 1 To UBound(arr)
  6.         For j = 1 To UBound(arr, 2)
  7.             If arr(i, j) = a Then d(a) = d(a) & "," & i        'a出现的行数
  8.             If arr(i, j) = b Then d(b) = d(b) & "," & i        'b出现的行数
  9.         Next
  10.     Next
  11.     xrr = Split(d(a), ","): yrr = Split(d(b), ",")
  12.     ReDim xxrr(1 To UBound(xrr))
  13.     ReDim yyrr(1 To UBound(yrr))
  14.     For i = 1 To UBound(xrr) - 1         '行数相减
  15.         xxrr(i) = Val(xrr(i + 1)) - Val(xrr(i))
  16.     Next
  17.     For i = 1 To UBound(yrr) - 1
  18.         yyrr(i) = Val(yrr(i + 1)) - Val(yrr(i))
  19.     Next
  20.     maxa = Application.Max(xxrr)    '找出最大
  21.     maxb = Application.Max(yyrr)
  22.     xmax = Application.Max(maxa, maxb)       '比较最大
  23.     [i1] = xmax
  24. End Sub
复制代码
回复

使用道具 举报

发表于 2015-3-27 10:29 | 显示全部楼层
本帖最后由 baksy 于 2015-3-27 10:38 编辑
13895003572 发表于 2015-3-27 10:18
3.11是一组合,要两数字同时出现

两个同时出现的最大间隔是8(第25行和第33行),没有7~
回复

使用道具 举报

发表于 2015-3-27 10:31 | 显示全部楼层
请看附件。楼上的公式估计不对。

复件 6.rar

9.88 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2015-3-27 10:33 | 显示全部楼层
13895003572 发表于 2015-3-27 10:01
G1和H1

只要是G1H1这组数字在同一行出现就算,不考虑列的位置
回复

使用道具 举报

发表于 2015-3-27 10:36 | 显示全部楼层
問個題都不會.這麼多人猜,都猜不出你想要乾嘛.
回复

使用道具 举报

发表于 2015-3-27 10:37 | 显示全部楼层
同时出现的话,结果是10(56行到66行)
  1. Sub ttt()      'a,b同时出现
  2.     arr = Range("a1:f" & [a65536].End(3).Row)
  3.     a = [g1]: b = [h1]
  4.     ReDim xrr(1 To UBound(arr))
  5.     Set d = CreateObject("scripting.dictionary")
  6.     For i = 1 To UBound(arr)
  7.         s = 0
  8.         For j = 1 To UBound(arr, 2)
  9.             If arr(i, j) = a Then s = s + 1
  10.             If arr(i, j) = b Then s = s + 1
  11.         Next
  12.         If s = 2 Then
  13.             n = n + 1
  14.             xrr(n) = i
  15.         End If
  16.     Next
  17.     'MsgBox Join(xrr, ",")
  18.     ReDim xxrr(1 To UBound(xrr))
  19.     For i = 1 To UBound(xrr) - 1         '行数相减
  20.         xxrr(i) = Val(xrr(i + 1)) - Val(xrr(i))
  21.     Next
  22.     xmax = Application.Max(xxrr)    '找出最大
  23.     [i1] = xmax
  24. End Sub
复制代码

复件 6.rar

10.04 KB, 下载次数: 0

回复

使用道具 举报

发表于 2015-3-27 10:41 | 显示全部楼层
13895003572 发表于 2015-3-27 10:33
只要是G1H1这组数字在同一行出现就算,不考虑列的位置

如果第一行两个都有,第二行也是两个都有,算隔了几行?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 13:46 , Processed in 0.354286 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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