Excel精英培训网

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

[已解决]自动判断间距问题

[复制链接]
发表于 2013-7-25 23:43 | 显示全部楼层 |阅读模式
附件 间距计算.rar (4.67 KB, 下载次数: 21)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-26 00:26 | 显示全部楼层
Sub test()
Dim x, y, k, k1, z
  x = 105
   For y = 1 To x - k
     k = k + 1
     If Cells(x - y, 1) = Cells(x - 2 * y, 1) Then
       For z = x - 2 * y - 1 To 1 Step -1
          If Cells(z, 1) = Cells(x - y, 1) Then
            k1 = k1 + 1
          End If
             If k1 = 1 Then
               m = m + 1
             ElseIf k1 = 2 Then
               [q1] = y
               [q2] = m
              Exit Sub
             End If
       Next z
     End If
   Next y

End Sub
回复

使用道具 举报

 楼主| 发表于 2013-7-26 01:33 | 显示全部楼层
甲百 发表于 2013-7-26 00:26
Sub test()
Dim x, y, k, k1, z
  x = 105

老师您好,谢谢您的帮助。试了一下,效果还可以。

只是频繁填序号有点烦恼。能不能麻烦您修改一下:

把那个序号固定为0,即从0那一单元格往上查询。

比如附件中的27往上查询。

这个0,也并不是固定在某个位置,是随机出现在不同地方的。

回复

使用道具 举报

发表于 2013-7-26 07:35 | 显示全部楼层
序号固定为0,即从0那一单元格往上查询???  是从最下方一个指定数字开始向上查?
回复

使用道具 举报

 楼主| 发表于 2013-7-26 08:51 | 显示全部楼层
甲百 发表于 2013-7-26 07:35
序号固定为0,即从0那一单元格往上查询???  是从最下方一个指定数字开始向上查?

这个指定数就是0,它所在的位置不是固定的。即系统自动判断 0  所在的位置,然后,从0往上一个一个筛选。
谢谢老师。
回复

使用道具 举报

发表于 2013-7-26 09:46 | 显示全部楼层    本楼为最佳答案   
找到一个符合的就退出运行,没考虑有多个符合的情况
  1. Private Sub CommandButton1_Click()
  2. Dim arr, i&, j&, k&, l As Byte, m As Byte
  3. arr = [a1].CurrentRegion
  4. For i = 1 To UBound(arr)
  5.   If arr(i, 1) = 0 Then Exit For
  6. Next i
  7. For k = 1 To Int(i / 2)
  8.   If arr(i - k, 1) = arr(i - 2 * k, 1) Then
  9.     l = 0: m = 0
  10.     For j = i - 2 * k - 1 To 1 Step -1
  11.       If arr(i - 2 * k, 1) = arr(j, 1) Then l = l + 1: m = Abs(j - m)
  12.     Next
  13.     If l = 2 Then
  14.       [q1] = k
  15.       [q2] = m
  16.       Exit Sub
  17.     End If
  18.   End If
  19. Next k
  20. End Sub
复制代码

间距计算.zip

12.89 KB, 下载次数: 6

评分

参与人数 1 +1 收起 理由
江萍 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-7-26 09:56 | 显示全部楼层
大灰狼1976 发表于 2013-7-26 09:46
找到一个符合的就退出运行,没考虑有多个符合的情况


谢谢老师帮助
繁填序号有点麻烦,希望

把那个序号固定为0,即从0那一单元格往上查询。

比如附件中的27往上查询。

这个0,也并不是固定在某个位置,是随机出现在不同地方的。

这个指定数就是0,它所在的位置不是固定的。即系统自动判断 0  所在的位置,然后,从0往上一个一个筛选。

回复

使用道具 举报

发表于 2013-7-26 10:38 | 显示全部楼层
A列数据,有500行左右。
事先指定一个任意序号。比如指定21
这个序号对应的数据是27。执行代码后
从27这个地方往上一个一个判断,
看与27同间距的某个数比如9,往上是否还有一个同间距的9
(27到9间距为5,9上面还有个9,间距也是5)
如果存在上面提到的条件,再判断:
两个9上面是否还存在  两个9(后面的两个9不要求间距。)
如果符合以上条件,则返回如下结果:
与序号21相邻的两个9间距为5,返回到Q1
后面两个9,间距为2,返回到Q2
不知这样说是否清楚,请各位老师指正。谢谢!
Sheet2有测试数据。




好难理解题意哦
怎样指定?
为什么是27?

回复

使用道具 举报

发表于 2013-7-26 10:43 | 显示全部楼层
我现在就是以0判断的呀,你有没有试一下,我把105行改成0试了一下,与你的结果是一致的
回复

使用道具 举报

 楼主| 发表于 2013-7-26 11:24 | 显示全部楼层
大灰狼1976 发表于 2013-7-26 10:43
我现在就是以0判断的呀,你有没有试一下,我把105行改成0试了一下,与你的结果是一致的

老师您好。认真的试了一下,您把这个 0 固定在105了。

如果用附件中,Sheet1里的数据来测试,就没结果显示了。

这个0,不能固定在一个地方。是随机变化的。

换句话说:A列数据,要变换的。换了数据后,这个0就不一定会在105那个地方了。
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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