Excel精英培训网

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

[已解决]助求14X+21Y+26Z=488正整数解?

[复制链接]
发表于 2013-10-21 21:46 | 显示全部楼层 |阅读模式
可否帮助求14X+21Y+26Z=488正整数解?用EXCEL解决,公式和规划求解都行,
TELEXON,QQ=859290525,十分感谢
最佳答案
2013-10-22 07:55
适合二元或三元都行:
  1. Sub ep()
  2.     Dim i As Integer, j As Integer, k As Integer, Rnum As Integer
  3.     Dim re()
  4.     Dim Totalsum As Integer, X1 As Integer, X2 As Integer, X3 As Integer
  5.     X1 = Sheets(1).Range("d2")
  6.     X2 = Sheets(1).Range("e2")
  7.     X3 = Sheets(1).Range("f2")
  8.     Totalsum = Sheets(1).Range("g2")

  9.     For i = 0 To Totalsum / X1
  10.         For j = 0 To Totalsum / X2
  11.             If X3 > 0 Then
  12.                 For k = 0 To Totalsum / X3
  13.                     If Totalsum = X1 * i + X2 * j + X3 * k Then
  14.                         m = m + 1
  15.                         ReDim Preserve re(1 To 3, 1 To m)
  16.                         re(1, m) = i
  17.                         re(2, m) = j
  18.                         re(3, m) = k
  19.                     End If
  20.                 Next k
  21.             Else
  22.                 If Totalsum = X1 * i + X2 * j Then
  23.                     m = m + 1
  24.                     ReDim Preserve re(1 To 3, 1 To m)
  25.                     re(1, m) = i
  26.                     re(2, m) = j
  27.                 End If
  28.             End If
  29.         Next j
  30.     Next i
  31.     Sheets(1).[a1].Resize(UBound(re, 2), 3) = Application.Transpose(re)
  32. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-10-21 21:54 | 显示全部楼层
规划求解  模型sumproduct   整数约束
回复

使用道具 举报

发表于 2013-10-21 21:58 | 显示全部楼层
回复

使用道具 举报

发表于 2013-10-21 22:02 | 显示全部楼层
如果要得到所有可能   或许要加入权重
回复

使用道具 举报

发表于 2013-10-21 22:04 | 显示全部楼层
  1. Sub ep()
  2.     Dim i As Integer, j As Integer, k As Integer, Rnum As Integer
  3.     Dim re()
  4.     Dim Totalsum As Integer, X1 As Integer, X2 As Integer, X3 As Integer
  5.     Totalsum = 488
  6.     X1 = 14
  7.     X2 = 21
  8.     X3 = 26
  9.     For i = 1 To Totalsum / X1
  10.         For j = 1 To Totalsum / X2
  11.             For k = 1 To Totalsum / X3
  12.                 If Totalsum = X1 * i + X2 * j + X3 * k Then
  13.                     m = m + 1
  14.                     ReDim Preserve re(1 To 3, 1 To m)
  15.                     re(1, m) = i
  16.                     re(2, m) = j
  17.                     re(3, m) = k
  18.                 End If
  19.             Next k
  20.         Next j
  21.     Next i
  22.     Sheets(1).[a1].Resize(UBound(re, 2), 3) = Application.Transpose(re)
  23. End Sub
复制代码
匹配.rar (7.95 KB, 下载次数: 7)
回复

使用道具 举报

发表于 2013-10-21 22:05 | 显示全部楼层
huangcaiguang 发表于 2013-10-21 22:02
如果要得到所有可能   或许要加入权重

怎么玩?
回复

使用道具 举报

 楼主| 发表于 2013-10-21 22:38 | 显示全部楼层
CheryBTL 发表于 2013-10-21 22:04

太谢谢您了,
vba 好用,可否给在A1,B1,C1,D1设置更新(14,21,26,488)几个常数,不用直接再改动您的VBA语言?求求你
回复

使用道具 举报

发表于 2013-10-21 22:40 | 显示全部楼层
将上面的常数,改用以下代码即可:
  1. X1=Sheets(1).Range("A1")
  2. X2=Sheets(1).Range("B1")
  3. X3=Sheets(1).range("C1")
  4. Totalsum=Sheets(1).range("D1")
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-10-21 22:46 | 显示全部楼层
CheryBTL 发表于 2013-10-21 22:40
将上面的常数,改用以下代码即可:

太谢谢您了,感动,工作上更省时间;
回复

使用道具 举报

 楼主| 发表于 2013-10-21 22:52 | 显示全部楼层
CheryBTL 发表于 2013-10-21 22:40
将上面的常数,改用以下代码即可:

dearS: 怎么提示错误,“溢出”,我实在不懂
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 08:35 , Processed in 0.406314 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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