ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 急~求助,这是一个关于数据按照分配比例“分配”的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-29 10:25 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
基本信息:
使用表格版本:execl 2016版
表格可使用功能:2016版本的涵数,无法使用vba
使用电脑版本:64位 win10 专业版

问题描述:
大佬是我理解错了,他实际是要这样分配的:
  1.案子区分新存案,新案和存案(使用相同逻辑,但是要单独分,也就是要么先分新在要么先分存案)
  2.人员的案子是滚动分配的,不是一次性分完这个人再分下一个,而是这样分的,比如表中的新案山东分了15户,按照山东的6个人分配比例,第一个人分5个,第二个人分3个,第三到第五个人都是分2个,第6个人只分一个,所以按需求去做分配的话,名单是这样的滚动的:123456,12345,12,1,1,依次减少,然后新案山西的也是这样。接下来就是按这个逻辑就分存案了
1730168639598.jpg

分配.7z

16.3 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-10-29 16:03 | 显示全部楼层
本帖最后由 混沌音符 于 2024-10-30 09:24 编辑

P2
  1. =SUBSTITUTE(OFFSET($S$3,--RIGHT(SMALL(IF(COLUMN($A:$E)<=$U$4:$U$9,COLUMN($A:$E)*10+ROW($1:$6),""),ROW()-1)),),",","")
复制代码
Dingtalk_20241030092428.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-29 17:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-29 20:30 | 显示全部楼层
好费劲!由于按照比例分配、取整时人数总和可能会不等于原总数,因此暂时人员数量分配先按照手动取值,即U4:U9为手动设置(可以自动计算、再人手调整)。
在此基础上,人员分配公式为:
  1. =LET(t,TRANSPOSE(U4:U9),s,DROP(REDUCE("",SEQUENCE(6),LAMBDA(x,y,IF(y=1,t,LET(sL,FILTER(TAKE(x,-1),TAKE(x,-1)>0),sN,ROWS(sL),sMin,IF(sN=1,1,MIN(sL)),VSTACK(x,TAKE(x,-1)-sMin))))),1),Res,IFERROR(VSTACK(t,s),0),a,TOCOL(Res),b,REPTARRAY(S4:S9,6),c,FILTER(b,a>0),c)
复制代码
微信图片_20241029202843.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-30 01:36 | 显示全部楼层
edwin11891 发表于 2024-10-29 20:30
好费劲!由于按照比例分配、取整时人数总和可能会不等于原总数,因此暂时人员数量分配先按照手动取值,即U4 ...

牛啊,大佬,不过为什么我的电脑用不了这个公式呀
1730223368479.jpg

TA的精华主题

TA的得分主题

发表于 2024-10-30 09:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
HUexcle 发表于 2024-10-30 01:36
牛啊,大佬,不过为什么我的电脑用不了这个公式呀

是不是公式复制有误?另外公式需要M365,或者新版WPS。
如前贴所述,由于按照比例分配名额时,取整可能导致总和与原数不一致(如Z3:Z9,AA11:AA14),因此,公式不包含求总人数、按比例分配等环节,公式以明确每人分配数为基础前提,且未能一条公式搞定整列的分配(因为涉及到人员分配数量)。
Q2:
  1. =LET(t,TRANSPOSE(U4:U9),s,DROP(REDUCE("",SEQUENCE(6),LAMBDA(x,y,IF(y=1,t,LET(sL,FILTER(TAKE(x,-1),TAKE(x,-1)>0),sN,ROWS(sL),sMin,IF(sN=1,1,MIN(sL)),VSTACK(x,TAKE(x,-1)-sMin))))),1),Res,IFERROR(VSTACK(t,s),0),a,TOCOL(Res),b,REPTARRAY(S4:S9,6),c,FILTER(b,a>0),c)
复制代码


Q17:
  1. =LET(t,TRANSPOSE(U12:U14),s,DROP(REDUCE("",SEQUENCE(6),LAMBDA(x,y,IF(y=1,t,LET(sL,FILTER(TAKE(x,-1),TAKE(x,-1)>0),sN,ROWS(sL),sMin,IF(sN=1,1,MIN(sL)),VSTACK(x,TAKE(x,-1)-sMin))))),1),Res,IFERROR(VSTACK(t,s),0),a,TOCOL(Res),b,REPTARRAY(S12:S14,6),c,FILTER(b,a>0),c)
复制代码
微信图片_20241030095209.png
微信图片_20241030095229.png

人员不均匀分配问题.zip

19.88 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-30 13:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
edwin11891 发表于 2024-10-30 09:58
是不是公式复制有误?另外公式需要M365,或者新版WPS。
如前贴所述,由于按照比例分配名额时,取整可能 ...

牛啊,但是公司的电脑只能用excel2016版本的

TA的精华主题

TA的得分主题

发表于 2024-10-30 19:42 | 显示全部楼层
本帖最后由 edwin11891 于 2024-10-30 19:45 编辑
HUexcle 发表于 2024-10-30 13:08
牛啊,但是公司的电脑只能用excel2016版本的

用WPS吧,什么新函数都有了。
有空把这个全部做好了。
1. 地区分配,自动一次性分配好。O2:
  1. =DROP(REDUCE("",{"新案","存案"},LAMBDA(x,y,VSTACK(x,LET(Nt,COUNTIF(N2:N49,y),SDn,ROUND(Nt*0.6,0),VSTACK(REPTARRAY({"山东"},SDn),REPTARRAY({"山西"},Nt-SDn)))))),1)
复制代码


2. 人员分配,自动全部一次性分配好,P2(Q2):
  1. =LET(fx,LAMBDA(ShName,ShNum,LET(t,TRANSPOSE(ShNum),s,DROP(REDUCE("",SEQUENCE(6),LAMBDA(x,y,IF(y=1,t,LET(sL,FILTER(TAKE(x,-1),TAKE(x,-1)>0),sN,ROWS(sL),sMin,IF(sN=1,1,MIN(sL)),VSTACK(x,TAKE(x,-1)-sMin))))),1),Res,IFERROR(VSTACK(t,s),0),a,TOCOL(Res),b,REPTARRAY(ShName,6),c,FILTER(b,a>0),c)),SDM,T4:T9,SXM,T12:T14,SDD,V4:W9,SXD,V12:W14,Res,REDUCE("",SEQUENCE(4),LAMBDA(x,y,VSTACK(x,fx(IF(MOD(y,2)=1,SDM,SXM),IF(MOD(y,2)=1,CHOOSECOLS(SDD,(y+1)/2),CHOOSECOLS(SXD,y/2)))))),DROP(Res,1))
复制代码


3. 如果新存案还有新类型,只需要向X列方向扩展数据,并将步骤2.公式中的SDD、SXD的范围扩展到相应列即可,比如还有第3种,分配人员数量后,公式中相应修改为:SDD,V4:X9,SXD,V12:X14。
微信图片_20241030193516.png
微信图片_20241030193552.png

人员不均匀分配问题.zip

20.7 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-30 20:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
edwin11891 发表于 2024-10-30 19:42
用WPS吧,什么新函数都有了。
有空把这个全部做好了。
1. 地区分配,自动一次性分配好。O2:

好的好的,我看看,其他能用wps我也肯定用的,但是公司的电脑不给装

TA的精华主题

TA的得分主题

发表于 2024-10-31 13:13 | 显示全部楼层
本帖最后由 溺水鱼 于 2024-10-31 13:59 编辑

=LET(fx,LAMBDA(a,b,DROP(REDUCE(0,SEQUENCE(MAX(b)),LAMBDA(x,y,VSTACK(x,OFFSET(a,,,SUM(IF(b-y+1>0,1,0)))))),1)),VSTACK(fx(T4,V4:V9),fx(T12,V12:V14),fx(T4,W4:W9),fx(T12,W12:W14))) image.jpg 借花献佛,借楼上的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 22:20 , Processed in 0.042778 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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