我正在尝试创建一个 Excel 文件,它可以帮助我将 1944 枚硬币分成 648 捆,每捆 3 枚硬币。
这些硬币来自 10 个桶。桶 1 包含金币。桶 2、3 和 4 包含银币。桶 5、6、7、8、9 和 10 包含铜币。
这是包含示例数据的表格:https://docs.google.com/spreadsheets/d/13ORB2QrvPVHepTVRWhmvQg7asyl_aYQhs6_4Ae2IyQg/edit?usp=sharing
需要遵循 2 条分配规则:
- Bundles 表中的每个 Bundle 必须包含来自不同桶的 3 枚硬币
- Bundles 表中的每个 Bundle 必须包含以下任一内容:
a) 1 枚金币和 2 枚铜币
b) 1 枚银币和 2 枚铜币
c) 3枚铜币
你知道我可以使用什么公式和逻辑来自动化分发同时满足规则吗?
答案1
如果 x 是金币总数(且是 3 的倍数),则前 x 行(从第 2 行开始,BC 列和 D 列)的公式为
="B1-"&(ROW()-1)
="B"&(MOD((ROW()-2)*2+(COLUMN()-3), 6)+5)&"-"&(INT(((ROW()-2)*2+(COLUMN()-3))/6)+1)
="B"&(MOD((ROW()-2)*2+(COLUMN()-3), 6)+5)&"-"&(INT(((ROW()-2)*2+(COLUMN()-3))/6)+1)
然后用 y全部的假设银币分布在三个银桶中,并且每个银桶中分布均匀,则接下来的 y 行必须是
="B"& (INT((ROW()-2-x) / (y/3))+2) &"-"&(MOD((ROW()-2-x), y/3)+1)
="B"&(MOD((ROW()-2)*2+(COLUMN()-3), 6)+5)&"-"&(INT(((ROW()-2)*2+(COLUMN()-3))/6)+1)
="B"&(MOD((ROW()-2)*2+(COLUMN()-3), 6)+5)&"-"&(INT(((ROW()-2)*2+(COLUMN()-3))/6)+1)
从第 x+y+1+1 行开始,我们只处理铜桶。上一行中最后一个铜币是(使用替换 ROW = x+y+1 和 COLUMN = 4)
"B"&(MOD((x+y+1-2)*2+(4-3), 6)+5)&"-"&(INT(((x+y+1-2)*2+(4-3))/6)+1)
简化为
"B"&(MOD((m+n)*6-1, 6)+5)&"-"&(INT(((m+n)*6-1)/6)+1)
x=3m 和 y=3n 并进一步简化为
"B10&"-"&(m+n)
因此正如评论中所说,我们已经完全处理了前 m+n 行铜币。
从 x+y+1+1 行开始,我们将在 BC 和 D 列中使用相同的公式来处理剩余的铜币:
="B"&(MOD((ROW()-2)*3+(COLUMN()-2), 6)+5)&"-"&(INT(((ROW(A2)-2)*3+(COLUMN()-2))/6)+1+m+n)
我认为。我根本没有测试过这些公式 :))