ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 193|回复: 9

[求助] 调整各个商品的数量使合计总和为一个确定的值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-19 16:01 | 显示全部楼层 |阅读模式
现在遇到这么个情况
商品的种类不一定,可能只有一两个,也可能有七八个,各自的单价是固定的,几个商品合起来的总价也是固定的。
现在要改变几个商品合起来的总价为另一个确定的值,但是单价无法调整,只能通过调整各种商品的数量来实现,但是有限定条件是调整的数量不能超过四位小数。不知道有什么方法能计算是否有解,有解的话各商品调整的数量是多少,无解则直接输出无解。
举个例子,商品A单价157.86,数量2,总价315.72;商品B单价239.89,数量1,总价239.89;两个商品合计总价555.61
现在我需要把商品A的总价调成315.71,商品B的总价调成193.19,但不要求把A和B各自调成315.71和193.19,只需要两个商品调整后的合计总价是315.71+193.19=508.9就可以。
那么经过我的测试,A的数量调增0.0001,同时B的数量调增-0.1948(负数即调减)使得A总价是315.74,B总价是193.16,【调整后的金额四舍五入】,两个商品调整后的合计总价是315.74+193.16=508.9,与需要的508.9一致,那么A的数量调整的解就是0.0001,B的数量调整的解就是-0.1948,我的目的就是输入商品A的单价、数量、数量B的单价、数量,,和我最终想要达到的合计总价,求出这两个调整数量的解。如果有商品CDEF等那同样需要输入,输出的同样要增加CDEF等调整数量的解。解是可以为0的,即不调整这个商品,但是这些解不能超过4位小数。
image.png
我传上的附件里,A列是商品名,B列是单价,C列是原本的数量,D列是原本的商品总价(B*C),E列就是要各位大佬帮忙写公式计算的调整的数量,可以是负数也可以是0,但就是不能超过4位小数,不能是0.01234这种值。F列就是调整后商品的数量(C+E),G是调整后各商品的总价(B*F,保留两位小数,四舍五入),H列是手动输入的需要调整到的总金额。G2不一定需要等于H2,但G列的总金额要等于H列的总金额。
第二个子表是一个我实际遇到的数据实例,供各位大佬进行测试。
因为不知道是无解还是我没找到,所以我没法给出无解的示例。

调整各个商品的数量使合计总和为一个确定的值.zip

10.43 KB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-20 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
有没有大佬协助下小弟

TA的精华主题

TA的得分主题

发表于 2024-11-20 09:15 | 显示全部楼层
  1. =IFERROR(ROUND(H2/B2-C2,4),"")
复制代码


有个问题,你的数量4位小数,可能会导致调整的金额与你手输入的金额有差异,因为四舍五入的关系

image.png

调整各个商品的数量使合计总和为一个确定的值.rar

11.03 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2024-11-20 09:30 | 显示全部楼层
感觉有解,就是输入一个调整的数值,剩余的输入,然后看结果的变化进行调整。

TA的精华主题

TA的得分主题

发表于 2024-11-20 09:50 | 显示全部楼层
池鱼之月 发表于 2024-11-20 08:49
有没有大佬协助下小弟

这个需求 好变态   就你这个例子 有两组解 ( 我跑了一亿次循环得出)

如果是批量的话  我也没啥好办法
image.png

TA的精华主题

TA的得分主题

发表于 2024-11-20 09:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
池鱼之月 发表于 2024-11-20 08:49
有没有大佬协助下小弟

刚回复一个,被审核了
就你这个测试2案例 有两组解  根本不是人力能算出来的  

TA的精华主题

TA的得分主题

发表于 2024-11-20 14:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-20 14:26 | 显示全部楼层
wp231957 发表于 2024-11-20 09:50
这个需求 好变态   就你这个例子 有两组解 ( 我跑了一亿次循环得出)

如果是批量的话  我也没啥好办 ...

大佬可以分享一下方法吗?其实我只需要一组可以满足要求的解就可以,不必须求所有的解出来。

TA的精华主题

TA的得分主题

发表于 2024-11-20 14:41 | 显示全部楼层
池鱼之月 发表于 2024-11-20 14:26
大佬可以分享一下方法吗?其实我只需要一组可以满足要求的解就可以,不必须求所有的解出来。

py代码   只适合单个问题,不适合批量
image.png

TA的精华主题

TA的得分主题

发表于 2024-11-20 15:15 | 显示全部楼层
池鱼之月 发表于 2024-11-20 14:26
大佬可以分享一下方法吗?其实我只需要一组可以满足要求的解就可以,不必须求所有的解出来。

也可以批量做  如果有需求  可以联系我
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-27 22:17 , Processed in 0.049580 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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