请EXCEL函数高手帮忙设计数组公式

如上图,一个团队总共5人,假设每天上班,其中4人上早班,1人上中班,每日轮换着去上中班,上中班的顺序是固定的,不需要考虑。这5人可以休假,甚至可以5个人全部休假,这5人中的任何一人休假时另行安排团队外的人顶班。我需要解决的问题是:1.根据每天中班的人员,自动将另外4人的名字填入“早班”对应的四个单元格内;2.遇到这个团队的人员休假时,将“早班顶班”、“中班顶班”的名字自动替换到“早班”、“中班”对应的单元格。谢谢高手!

1.在B4中输入或复制粘贴下列公式

=INDEX($1:$1,SMALL(IF($B$1:$F$1=$F4,256,COLUMN($B:$F)),COLUMN(A1)))&""

按三键CTRL+SHIFT+ENTER结束公式输入

下拉填充,右拉填充

在G4中输入或复制粘贴下列公式

=IFERROR(VLOOKUP(F4,Q4:R4,2,),"")

下拉填充

在T4中输入或复制粘贴下列公式

=SUBSTITUTE(SUBSTITUTE(B4,$H4,$L4),$I4,$M4)

下拉填充,右拉填充

在X4中输入或复制粘贴下列公式

=IF(G4<>"",G4,F4)

下拉填充

T:X列为实际值班表。

你对比一下B:R共17列与T:X共5列单元格之间的结果,就知道休假顶班的情况已经通过VLOOKUP和SUBSTITUTE函数处理完毕了。

如果5个人全休假,SUBSTITUTE要嵌套5次。上面有2人休假,SUBSTITUTE只嵌套了2次。

追问

休假顶班的情况怎么处理呢?

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-10

这位度友,建议你的排班表重新设计一下:下面这张表基本能够实现你的需求,说明如下:

1、班次可以设计为“早班、中班、公休、”,可以加入“早顶班”"中顶班",在数据有效性中设计;2、上班记录,通过下拉按键来实现,总体可以通过背景颜色一目了然;3、每个人上班的次数可以通过最后的公式来统计,同时灵活平衡每人班次。4、每个月只需要你更改一下年月值C2,其他应变的,D2 =TEXT($C2&"-"&D$1,"aaaa"),  统计公式:AI3=COUNTIF($D3:$AH3,$AI$1),AJ3==COUNTIF($D3:$AH3,$AJ$1),AK3==COUNTIF($D3:$AH3,$AK$1)

不知是否满意,可以再交流。

第2个回答  2019-06-09


    少掉的部分是省略的参数,省略参数的默认值请自行百度。

index(reference,row,col,aera)

本例中reference 是b:b

row是small(if($d$2:$d$11=$b$13,row($d$2:$d$11),100),row(1:1))

其余两参数省回复,默认为1,不理解可以选中公式的一部分,按F9查看结果,这样便于理解,查看完成后ALT+Z返回。

small 函数返回数组中指定的第几小的数值,本例中if($d$2:$d$11=$b$13,row($d$2:$d$11),100)返回的是一个由行号组成的数组,ROW(1:1)为small函数的第二参数,下拉时变成row(2:2),row(3:3)等,依次取最小,第二小....

2.&""原意是为了把结果转换成文本,但是在这里是另外作用,当符合条件的行号都提取完后,就提取100行的数据,100行应该是空行,提取出来显示的是0,用了&""以后,0就被屏蔽掉了,显示为空。




本回答被网友采纳

请EXCEL函数高手帮忙设计数组公式
1.在B4中输入或复制粘贴下列公式 =INDEX($1:$1,SMALL(IF($B$1:$F$1=$F4,256,COLUMN($B:$F)),COLUMN(A1)))&""按三键CTRL+SHIFT+ENTER结束公式输入 下拉填充,右拉填充 在G4中输入或复制粘贴下列公式 =IFERROR(VLOOKUP(F4,Q4:R4,2,),"")下拉填充 在T4中输入或复制粘贴下列公式 =SUB...

求EXCEL函数高级数组公式,高手来帮忙,谢谢!
=SUMPRODUCT((A1:A12=F1)*(MATCH(B1:B12,B1:B12,0)=ROW(1:12)))应该就这么简单了,已测试通过!

请EXCEL高手写一个函数自动统计表内出现最多的组合?
G2单元格内公式为:=SUM(IF(B2:B9&C2:C9&D2:D9=$F$2,1,0))按三键结束(Ctrl+Shift+Enter)现在说说公式的逻辑 1、B2:B9&C2:C9&D2:D9,将三列的数据合并起来,形成一列数组,这一列数组是文本数据;2、生成的数组与F2的查询值进行对比,B2:B9&C2:C9&D2:D9=$F$2,按满足条件显...

excel数组公式 求教 高手请进
先分开理解公式的组成,COUNTIF(B2:B43,B2:B43)这部分是数组计算,他的含义就是分别求COUNTIF(B2:B43,B2),COUNTIF(B2:B43,B3),COUNTIF(B2:B43,B4),……COUNTIF(B2:B43,B43),的结果。也就是B2,B3……在区域内的个数,---a 1\/COUNTIF(B2:B43,B2:B43),就是把每个结果都被1除,-...

请教下excel大神们 如何完善这个数组公式,需要满足有多个条件的?_百度...
假设初始表的表名为SHEET1,两个表的内容都是在A,B,C,D列再用公式 =INDEX(Sheet1!$A:$A,SMALL(IF((Sheet1!$B$2:$B$10<=$A2)*(Sheet1!$C$2:$C$10>=$A2),ROW($2:$10),4^8),COLUMN(A1)))&""数组公式,按下SHIFT+CTRL+ENTER三键结束输入,右拉复制公式,再下拉复制公式。

关于INDEX和small数组公式的疑问,请excel高手帮忙关于这样的数组公式...
row是small(if($d$2:$d$11=$b$13,row($d$2:$d$11),100),row(1:1))其余两参数省回复,默认为1,不理解可以选中公式的一部分,按F9查看结果,这样便于理解,查看完成后ALT+Z返回。small 函数返回数组中指定的第几小的数值,本例中if($d$2:$d$11=$b$13,row($d$2:$d$11),100)...

EXCEL数组公式,高手来帮忙!
) 返回你输入单元格列数的值,如在D列输入 返回 4 2: =COLUMN(A1) 返回1 =COLUMN(B1) 返回2 3: 组合函数应用 =CHAR(COLUMN()+64) 你在A1 单元格输入上公式后得到A 然后右拉 依次得到 B C D ··· 同理将以上的 COLUMN 换成 ROW 就变成了行数了,往下填充试下就知道了 ...

请教一个关于EXCEL 的数组算法,谢谢大家~~估计用得做自定义函数
在C1输入公式:=SUM(MID(B1&B2&B3&B4,SMALL(IF(MATCH(MID(B1&B2&B3&B4,ROW($1:$16),1),MID(B1&B2&B3&B4,ROW($1:$16),1),)=ROW($1:$16),ROW($1:$16),20),ROW($1:$5)),1)*10^(5-ROW($1:$5)))公式以CTRL+SHIFT+ENTER三键结束。将公式向下复制。在D1输入公式:=...

关于EXCEL函数公式,请高手指点
sheet2!a1=7 sheet2!b1=8 sheet2!c1=1(这里就是你要的固定数字)sheet2!a2=10 sheet2!b2=9 sheet2!c2=2 sheet2!a3=8 sheet2!b3=5 sheet2!c3=3 ...然后c1公式可以写成=MAX((Sheet2!A1:A20=A1)*(Sheet2!B1:B20=B1)*(Sheet2!C1:C20))按shift+ctrl+enter键...

急急急.请EXCEL高手帮忙,在线等.
如图:D2==MIN(IF(A2*ROW($A$2:$A$21)+B2>C2,IF(B2+A2*ROW($A$2:$A$21)-C2<A2,A2*ROW($A$2:$A$21)))数组公式 还有一个问题是,你没有说在B大于或等于C的情况下,是什么个情况!

相似回答