簡體   English   中英

需要優化假期計划Excel的幫助(總和超過10000行)

[英]Need help optimizing vacation planning Excel (sumproduct of 10000+ rows)

在此圖片中,您可以在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.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中是數據。

數據范圍應該是動態的,因為我使用了偏移量和間接方法,但是當我嘗試將其用於所有10k +行的員工時,excel就會凍結。

有人知道更有效的方法嗎?

首先將原始數據轉換為表(tblVacDates)。 然后,您可以使用COUNTIFS這樣的公式。

=IF(COUNTIFS(tblVacDates[Name];B$1,tblVacDates[Start];"<="&$A2;tblVacDates[End];">="&$A2)=0;"";"X")

將公式粘貼到其他列(不要拖動)。 然后,您可以復制/拖動

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM