Excel精英培训网

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

[已解决]求助个查找、循环的VBA解法

[复制链接]
发表于 2012-5-3 17:36 | 显示全部楼层 |阅读模式
在I5单元格中输入子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥其中任意一个,上面的甲就定位在这个字的上面,其它9个字就按照现在的顺序依次向后循环对应下面的字排列,

例在I5中是个  子,上面的甲就定位在子的上面,其它的乙 丙 丁 戊 己 庚 辛 壬 癸字依次向后排列,
   如果I5是个  未,上面的甲就定位在未的上面,其它的乙 丙 丁 戊 己 庚 辛 壬 癸字依次向后排列至最后一个字时将余下的几字再从头上开始,如下

      子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥
      己 庚 辛 壬 癸          甲 乙 丙 丁 戊
                                                                  请高手们用VBA给个解法,谢谢
Book1.rar (2.28 KB, 下载次数: 8)
发表于 2012-5-3 18:20 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2. Dim m, x
  3. Dim arr(1 To 1, 1 To 12)
  4. m = Application.Match(Range("i6"), Range("k6:v6"), 0)
  5. For x = m To 12
  6. k = k + 1
  7. arr(1, x) = Mid("甲乙丙丁戊己庚辛壬癸", k, 1)
  8. Next x
  9. For x = 1 To m - 3
  10. k = k + 1
  11. arr(1, x) = Mid("甲乙丙丁戊己庚辛壬癸", k, 1)
  12. Next x
  13. Range("k5").Resize(1, 12) = arr
  14. End Sub
复制代码

Book1.rar (12.1 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2012-5-3 18:26 | 显示全部楼层
也可以用公式.

K5
=MID("甲乙丙丁戊己庚辛壬癸",MOD(COLUMN(Y5)-FIND($I6,"子丑寅卯辰巳午未申酉戌亥"),12)+1,1)

向右填充
回复

使用道具 举报

 楼主| 发表于 2012-5-3 21:56 | 显示全部楼层
非常好,就是这个效果,谢谢版主和高手们了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 20:19 , Processed in 0.338975 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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