【原创】VBA学习笔记(32)【例子】----想循环写出60甲子---想到的几个办法--占位

版权声明:一起学习,一起成长,欢迎关注 奔跑的犀牛先生 https://blog.csdn.net/xuemanqianshan/article/details/89178725

方法1:1个特直接特别笨的办法:先写序列再&

  • 直接把天干地支都写成60个循环。
  • 天干*6 复制6份
  • 地支*5 复制5份
  • 然后,两个数组这样对着咬合起来,
  • 剩下的就是把每列的文本组合在一起
  • 但这样的办法感觉很挫
甲子 乙丑 丙寅 丁卯 戊辰 己巳 庚午 辛未 壬申 癸酉 甲戌 乙亥 丙子 丁丑 戊寅 己卯 庚辰 辛巳 壬午 癸未 甲申 乙酉 丙戌 丁亥 戊子 己丑 庚寅 辛卯 壬辰 癸巳 甲午 乙未 丙申 丁酉 戊戌 己亥 庚子 辛丑 壬寅 癸卯 甲辰 乙巳 丙午 丁未 戊申 己酉 庚戌 辛亥 壬子 癸丑 甲寅 乙卯 丙辰 丁巳 戊午 己未 庚申 辛酉 壬戌 癸亥
Sub ganzhi()
For i = 1 To 60
   Cells(3, i) = Cells(1, i) + Cells(2, i)
Next i
End Sub


 

方法2:用了系统函数lcm,然后自动排出新的2个60的数组行

  • 这个我自己写的
  • 但是还是觉得挺2的
  • 这2个新的60的数组非要写出来吗?不能直接存在数组里? 数组能*2这种倍数吗?python可以的
                                                                                                   
                                                                                               
庚申 辛酉 壬戌 癸亥 甲子 乙丑 丙寅 丁卯 戊辰 己巳 庚午 辛未 壬申 癸酉 甲戌 乙亥 丙子 丁丑 戊寅 己卯 庚辰 辛巳 壬午 癸未 甲申 乙酉 丙戌 丁亥 戊子 己丑 庚寅 辛卯 壬辰 癸巳 甲午 乙未 丙申 丁酉 戊戌 己亥 庚子 辛丑 壬寅 癸卯 甲辰 乙巳 丙午 丁未 戊申 己酉 庚戌 辛亥 壬子 癸丑 甲寅 乙卯 丙辰 丁巳 戊午 己未
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Sub ganzhi()


Dim x
Dim arr_tiangan(10)
Dim arr_dizhi(12)
a = 1                          '运算前必须进行定义
b = 1

x = Sheets("ganzhi3").UsedRange
For i = 1 To 10
   arr_tiangan(i) = Cells(1, i)
Next

For j = 1 To 12
   arr_dizhi(j) = Cells(2, j)
Next

m = Application.Lcm(10, 12)   '取最小公倍数
m_tiangan = m / 10
m_dizhi = m / 12

For i = 1 To m_tiangan
   For j = 1 To 10
     Cells(3, a) = arr_tiangan(j)
     a = a + 1
   Next j
Next i

For i = 1 To m_dizhi
   For j = 1 To 12
     Cells(4, b) = arr_dizhi(j)
     b = b + 1                    '这里如果继续用a a的值会继承下来?!
   Next j
Next i

For i = 1 To 60
   Cells(5, i) = Cells(3, i) + Cells(4, i)
Next

其他办法?

错误例子

'错误的双循环写法,为什么总想这么写?
' 数组应该也可以写

为什么总是喜欢用双循环,这是错的

For i = 1 To 60
Cells(1, i) = 1
Next i

For j = 1 To 60
Cells(2, j) = 1
Next j

猜你喜欢

转载自blog.csdn.net/xuemanqianshan/article/details/89178725