Excel精英培训网

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

[已解决]如果用代码判断这种复杂的关系?

[复制链接]
发表于 2015-7-31 09:59 | 显示全部楼层 |阅读模式
本帖最后由 阿丽儿 于 2015-7-31 11:08 编辑

附件 判断间隔相等数附件.rar (309.76 KB, 下载次数: 18)
发表于 2015-7-31 10:43 | 显示全部楼层
  1. Sub 判断()
  2.     Dim brr(1 To 1000, 1 To 4)
  3.     Application.ScreenUpdating = False
  4.     Dim Filename, wb As Workbook
  5.     Filename = Dir(ThisWorkbook.Path & "\*.xlsx")
  6.     Do While Filename <> ""
  7.         If Filename <> ThisWorkbook.Name Then
  8.             fn = ThisWorkbook.Path & "" & Filename
  9.             Set wb = Workbooks.Open(fn)
  10.             arr = wb.Sheets(1).[a1].CurrentRegion
  11.             r = UBound(arr) - 1   '有数字的最后一行
  12.             For j = 1 To UBound(arr, 2)
  13.                 n = 0
  14.                 For i = r To 3 * r / 4 - 1 Step -1     '只需判断最末一行至最末一行的3/4处
  15.                     n = n + 1
  16.                     If arr(i, j) = n And i > 3 * n Then     '倒数第n行数值为n
  17.                         If arr(i - n, j) = n And arr(i - 2 * n, j) = n And arr(i - 3 * n, j) = n Then
  18.                             p = p + 1
  19.                             brr(p, 1) = n
  20.                             brr(p, 2) = wb.Name
  21.                             brr(p, 4) = Split(Cells(1, j).Address, "$")(1)     '第j列的列号
  22.                         End If
  23.                     End If
  24.                 Next
  25.             Next
  26.             wb.Close False
  27.         End If
  28.         Filename = Dir
  29.     Loop
  30.     If p > 0 Then [e5].Resize(p, 4) = brr
  31.     Application.ScreenUpdating = True
  32. End Sub
复制代码
回复

使用道具 举报

发表于 2015-7-31 10:44 | 显示全部楼层    本楼为最佳答案   
请看附件。

判断间隔相等数附件.rar

321.63 KB, 下载次数: 4

评分

参与人数 1 +1 收起 理由
阿丽儿 + 1 谢谢老师!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-8-9 22:47 | 显示全部楼层
本帖最后由 阿丽儿 于 2015-8-9 22:49 编辑
grf1973 发表于 2015-7-31 10:44
请看附件。

老师您好,能麻烦您作一下小小的修改吗?谢谢了!

附件 判断间隔相等数附件5.rar (304.76 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2015-8-10 10:17 | 显示全部楼层
  1. Sub 判断()
  2.     Dim brr(1 To 1000, 1 To 4)
  3.     Application.ScreenUpdating = False
  4.     Dim Filename, wb As Workbook, Sh As Worksheet
  5.     Filename = Dir(ThisWorkbook.Path & "\*.xlsx")
  6.     Do While Filename <> ""
  7.         If Filename <> ThisWorkbook.Name Then
  8.             fn = ThisWorkbook.Path & "" & Filename
  9.             Set wb = Workbooks.Open(fn)
  10.             Set Sh = wb.Sheets(1)
  11.             c = Sh.UsedRange.Columns.Count
  12.             rmax = Sh.UsedRange.Rows.Count + 2
  13.             arr = Sh.Range(Sh.[a1], Sh.Cells(rmax, c))
  14.             For j = 1 To c
  15.                 n = 0
  16.                 r = Sh.Cells(65536, c).End(3).Row + 1 '针对每一列,从有数字下一个空格开始往上数
  17.                 For i = r To 3 * r / 4 - 1 Step -1     '只需判断最末一行至最末一行的3/4处
  18.                     n = n + 1
  19.                     If arr(i, j) = n And i > 3 * n Then     '倒数第n行数值为n
  20.                         If arr(i - n, j) = n And arr(i - 2 * n, j) = n And arr(i - 3 * n, j) = n Then
  21.                             p = p + 1
  22.                             brr(p, 1) = n
  23.                             brr(p, 2) = wb.Name
  24.                             brr(p, 4) = Split(Cells(1, j).Address, "$")(1)     '第j列的列号
  25.                         End If
  26.                     End If
  27.                 Next
  28.             Next
  29.             wb.Close False
  30.         End If
  31.         Filename = Dir
  32.     Loop
  33.     If p > 0 Then [e5].Resize(p, 4) = brr
  34.     Application.ScreenUpdating = True
  35. End Sub
复制代码

判断间隔相等数附件5.rar

316.66 KB, 下载次数: 2

评分

参与人数 1 +1 收起 理由
阿丽儿 + 1 谢谢老师!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 17:26 , Processed in 0.365171 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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