Excel精英培训网

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

[已解决]VBA列出所有分母小于等于

[复制链接]
发表于 2016-4-28 08:56 | 显示全部楼层 |阅读模式
VBA列出所有分母小于等于

VBA按递增顺序列出所有分母小于等于40的最简真分数


最佳答案
2016-4-28 16:36
如果公约数不写成独立函数,那么合并起来是这样子:
  1. Sub test2() 'by kagawa 2016/4/28
  2.     Dim i&, j&, k&, t&, t1&, t2&
  3.     For i = 2 To 40
  4.         Cells(i, 1) = i: Cells(i, 2) = 1: j = 2
  5.         For k = 2 To i - 1
  6.             t1 = i: t2 = k
  7.             Do
  8.                 t = t1 Mod t2: t1 = t2: t2 = t
  9.             Loop While t
  10.             If t1 = 1 Then j = j + 1: Cells(i, j) = k
  11.         Next
  12.     Next
  13. End Sub
复制代码
发表于 2016-4-28 16:22 | 显示全部楼层
本帖最后由 香川群子 于 2016-4-28 16:40 编辑

首列A列为分母,2 To 40
第2列B列以后开始为最简真分数的分子:
  1. Sub test() 'by kagawa 2016/4/28
  2.     Dim i&, j&, k&
  3.     For i = 2 To 40
  4.         Cells(i, 1) = i: Cells(i, 2) = 1: j = 2
  5.         For k = 2 To i - 1
  6.             If GCD(i, k) = 1 Then j = j + 1: Cells(i, j) = k
  7.         Next
  8.     Next
  9. End Sub
  10. Function GCD&(t1&, t2&) '最大公約数 G.C.D=Greatest Common Divisor
  11.     If t1 Mod t2 Then GCD = GCD(t2, t1 Mod t2) Else GCD = t2
  12. End Function
复制代码
zfs.png

评分

参与人数 1 +9 收起 理由
vbyou127 + 9

查看全部评分

回复

使用道具 举报

发表于 2016-4-28 16:36 | 显示全部楼层    本楼为最佳答案   
如果公约数不写成独立函数,那么合并起来是这样子:
  1. Sub test2() 'by kagawa 2016/4/28
  2.     Dim i&, j&, k&, t&, t1&, t2&
  3.     For i = 2 To 40
  4.         Cells(i, 1) = i: Cells(i, 2) = 1: j = 2
  5.         For k = 2 To i - 1
  6.             t1 = i: t2 = k
  7.             Do
  8.                 t = t1 Mod t2: t1 = t2: t2 = t
  9.             Loop While t
  10.             If t1 = 1 Then j = j + 1: Cells(i, j) = k
  11.         Next
  12.     Next
  13. End Sub
复制代码

评分

参与人数 1 +9 收起 理由
vbyou127 + 9

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-4-28 18:15 | 显示全部楼层
本帖最后由 vbyou127 于 2016-4-28 18:18 编辑
香川群子 发表于 2016-4-28 16:36
如果公约数不写成独立函数,那么合并起来是这样子:

不知道你在表达什么,

分数值按递增顺序    分母小于等于于40     最简真分数

前两行结果如何解释
二分之一
三分之一    三分之二



回复

使用道具 举报

发表于 2016-4-28 19:34 | 显示全部楼层
vbyou127 发表于 2016-4-28 18:15
不知道你在表达什么,

分数值按递增顺序    分母小于等于于40     最简真分数

嗯,就是酱紫的啦。

如果n是素数,那么1 To n-1 都是真分数。
回复

使用道具 举报

 楼主| 发表于 2016-4-28 19:47 | 显示全部楼层
问题是,你没有 将最简真分数 的分数值按递增顺序

你这个,没有人能知道,
二分之一,怎么能排到  三分之一     前面
回复

使用道具 举报

发表于 2016-4-29 12:57 | 显示全部楼层
vbyou127 发表于 2016-4-28 19:47
问题是,你没有 将最简真分数 的分数值按递增顺序

你这个,没有人能知道,

你是要把所有489个真分数,按照数值大小排序吗?

那也只要把结果排一下序就可以了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 12:33 , Processed in 0.370070 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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