需要帮助优化假期计划Excel(10000行的sumproduct)
在这张图片中,您可以在F到H列中看到原始数据的样子,A到D列是我需要的(但水平) 我将数据转换为显示员工休假的确切日期,而不是日期范围,例如:需要帮助优化假期计划Excel(10000行的sumproduct),excel,Excel,在这张图片中,您可以在F到H列中看到原始数据的样子,A到D列是我需要的(但水平) 我将数据转换为显示员工休假的确切日期,而不是日期范围,例如: John 02.01.2018 03.01.2018 04.01.2018 05.01.2018 John 07.01.2018 08.01.2018 09.01.2018 10.01.2018 Tom 01.01.2018 02.01.2018 03.01.2018 04.01.2018 05.01.2
John 02.01.2018 03.01.2018 04.01.2018 05.01.2018
John 07.01.2018 08.01.2018 09.01.2018 10.01.2018
Tom 01.01.2018 02.01.2018 03.01.2018 04.01.2018 05.01.2018
Tom 07.01.2018 08.01.2018 09.01.2018
Mark 04.01.2018 05.01.2018 06.01.2018
Mark 08.01.2018 09.01.2018 10.01.2018
这样,我就可以使用sumproduct来填充我的计划表,并且它可以正常工作。我设法为经理们这样做,因为原始数据只有400行。我使用以下公式:
=IF(SUMPRODUCT((OFFSET(VMX!$G$2;0;0;COUNTIF(VMX!$G:$G;">""")-1;1)=Planner!$A3)*(INDIRECT("VMX!$O$2:$AS$"&COUNTIF(VMX!$G:$G;">"""))=Planner!G$1)*(OFFSET(VMX!$M$2;0;0;COUNTIF(VMX!$M:$M;">""")-1;1)="X"))>0;"X";IF(SUMPRODUCT((OFFSET(VMX!$G$2;0;0;COUNTIF(VMX!$G:$G;">""")-1;1)=Planner!$A3)*(INDIRECT("VMX!$O$2:$AS$"&COUNTIF(VMX!$G:$G;">"""))=Planner!G$1)*(OFFSET(VMX!$M$2;0;0;COUNTIF(VMX!$M:$M;">""")-1;1)="Y"))>0;"Y";IF(SUMPRODUCT((OFFSET(VMX!$G$2;0;0;COUNTIF(VMX!$G:$G;">""")-1;1)=Planner!$A3)*(INDIRECT("VMX!$O$2:$AS$"&COUNTIF(VMX!$G:$G;">"""))=Planner!G$1)*(OFFSET(VMX!$M$2;0;0;COUNTIF(VMX!$M:$M;">""")-1;1)="O"))>0;"O";"")))
我使用名称管理器将此公式简化为:
=IF(SPX>0;"X";IF(SPY>0;"Y";IF(SPO>0;"O";"")))
在工作表VMX中是数据
数据范围应该是动态的,因为我使用了offset和indirect,但当我尝试对所有员工使用它时,即10k+行,excel只是冻结
有人知道更有效的方法吗?首先将原始数据转换为表(tblVacDates)。然后您可以使用这样的公式,使用
COUNTIFS
=IF(COUNTIFS(tblVacDates[Name];B$1,tblVacDates[Start];"<="&$A2;tblVacDates[End];">="&$A2)=0;"";"X")
=IF(COUNTIFS(tblVacDates[Name];B$1,tblVacDates[Start];“=”&$A2)=0;“;”X”)
将公式粘贴到其他列(不要拖动)。然后可以复制/向下拖动
>将公式粘贴到其他列(不要拖动)。名字可能是100+而且名字来自pivot表,每个经理都可以在该表中选择自己的员工。@mandmi-那么问题出在哪里?您不必一次粘贴一个。选择单元格B2。复制选择单元格B3:B100。粘贴选择单元格B2:B100。拖下来。完成。作为替代,您可以使用绝对列名。例如,tblVacDates[[Name]:[Name]]。在回答之前,我使用了以下命令:
=IF(COUNTIFS(RawData!$F$2:$F$34639;$A4;RawData!$K$2:$K$34639;“=”&EX$1)=0;“;”X”)
它可以工作,但现在速度更慢了。这张桌子快吗?我还把它换成了水平方向。实际上,我觉得速度更快。对于sumproduct,Excel在5分钟内没有响应。这样花了大约1分钟的时间,它实际上显示了计算的进度。你认为可以更快地修改它吗?@mandmi-你试过把原始数据转换成表格吗?它可以更快。我不确定。这就是我现在所拥有的;-)