Excel精英培训网

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

[已解决]用VBA怎样求解此题

[复制链接]
发表于 2008-12-16 16:27 | 显示全部楼层 |阅读模式

原帖:http://www.excelpx.com/forum.php?mod=viewthread&tid=83438

相信不少人看过。我将题目换了个比方:

我有很多BB要送人,

如果每人送33个,则还剩余1个BB;

如果每人送44个,则还剩余2个BB;

如果每人送55个,则还剩余4个BB;

问:我究竟有多少BB?

假设,我没理解,那么

设x表示人数,y表示BB总数,则有以下3个等式:

33x+1=y
44x+2=y
55x+4=y

等式相加化简后,x=(3*y-7)/132,下面是我的代码:

Sub aa()
Dim x           '人数
Dim y           'BB数
x = 0.1         '人数是不能为小数,这样设初值,完全是为让程序正常运行。
y = 59

Do While x <> Int(x)
    y = y + 1
    x = (3 * y - 7) / 132
    If y > 10000 Then Exit Sub
Loop

MsgBox y
End Sub

问题来了:

  1. 以上代码执行后,为何无任何反应?
  2. 如果一定要用VBA求解,该如何编写?
  3. 如果是题目有误,该如何证明?

谢谢!!

最佳答案
2008-12-16 21:08
这句If y &gt; 10000 Then Exit Sub的结果
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2008-12-16 16:56 | 显示全部楼层

估计你是遇到死循环了,这里的X和Y不可能同时有整数解.

回复

使用道具 举报

 楼主| 发表于 2008-12-16 17:07 | 显示全部楼层

谢谢!

Do While x <> Int(x)
这句本是想表达,当X为小数时,则跳出循环,结束sub。不知这么写对吗?

从运行效果上看,没感觉自己死机啊,过程也无任何提示,如同我没按运行一样。所以,很迷惑。

回复

使用道具 举报

发表于 2008-12-16 17:37 | 显示全部楼层

理解错了!

[此贴子已经被作者于2008-12-16 17:38:50编辑过]
回复

使用道具 举报

发表于 2008-12-16 17:37 | 显示全部楼层

33x+1=y
44x+2=y
55x+4=y

你的理解是33X+1=44X+2=55X+4   ?    X为整数,可能吗?

[em09]

[此贴子已经被作者于2008-12-16 17:43:07编辑过]
回复

使用道具 举报

 楼主| 发表于 2008-12-16 17:41 | 显示全部楼层

从哪儿开始错了?

[em04]
回复

使用道具 举报

发表于 2008-12-16 17:41 | 显示全部楼层

首先我认为你的题目表述有问题:

1.如果每个人分到33个BB还剩1个BB,那拿这些BB去给这些人每人分44个BB肯定是不够分的,又怎么能再剩余2个呢?

2.依据条件1的状况,你的公式首先就是错误的。

3.正确的题目意思应该是:如果把这些BB每个人分33个,保证每个人分到,余1个。如果每个人分44个,肯定不是所有人都分到,有一个人将会得到2个BB;如果每个人分55个,肯定不是所有人都分到,有一个人将会得到3个BB。

所以应该重新确定BB数和人数之间的关系。

回复

使用道具 举报

发表于 2008-12-16 17:51 | 显示全部楼层

三组人群,每组人群人数不同
回复

使用道具 举报

 楼主| 发表于 2008-12-16 18:21 | 显示全部楼层

谢谢各位先[em27][em27]

5楼,我的确是理解为33X+1=44X+2=55X+4=Y的。X为整数,可能不可能?

我希望能证明可能、或不可能。而你回复给我的,仍是个问题,呵呵。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

7楼,

  1. 如果每个人分到33个BB还剩1个BB,那拿这些BB去给这些人每人分44个BB肯定是不够分的,又怎么能再剩余2个呢?是不是说,33的倍数加1,不能被44整除?如果是,怎样证明?也许只是简单几步,但我现在还不清楚
  2. 依据条件1的状况,你的公式首先就是错误的。我不明白指什么。
  3. 你的第3条我理解为,是你对题意的分析。而我希望通过某种方法证明,无论对或错。

PS:我还不清楚(如何证明)。我希望,至少能找到,我那段代码为什么会无任何效果(应该有科学的解释才是啊)。谢谢各位,未完,希望可以继续....

回复

使用道具 举报

发表于 2008-12-16 21:08 | 显示全部楼层    本楼为最佳答案   

这句If y &gt; 10000 Then Exit Sub的结果
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 11:01 , Processed in 0.165772 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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