2012-07-31 65 views
0

好吧,所以這裏是我當前的代碼示例。我有幾個單元格,其中B-H7反映它正在尋找的缺席類型。CountIfs日期範圍和條件,可能是一個VBA解決方案

=COUNTIFS('Old Data'!$A:$A,Tracking!A8,'Old Data'!$B:$B,$E$7, 'Old Data'!D:D, ">"&$B$5, 'Old Data'!D:D, "<"&$C$5) 

這段代碼做的是通過一個電子表格,其中員工姓名在數據表中發現循環,比較缺乏的類型,並將它們分揀到各自的列和計算他們的代碼限制的最後一位日期範圍之間的搜索。

這就是說,我需要添加條件,我不知道我可以不把它帶入VBA。在D列中的「舊數據」表中,我有開始時間,以MM/DD/YY HH:MM格式顯示。在E列中,我有End Time,它以相同的MM/DD/YY HH:MM格式顯示。

我需要有一種方法來

A.)有編程'算這些日期和+1的次數爲每個相應天之間的天數。

B.)如果開始日期和結束日期相同,讓程序比較小時數。如果它小於4,只需在計數器中加一個.5。

我的第一個想法是抓住countifs公式並使用VBA解析出來,但我想我會首先檢查是否可以用公式作爲內置函數的功能來完成到目前爲止,我一直非常驚訝。

我想我應該從公式到VBA函數,並在單元格中調用它,但我不完全確定,對VBA/Excel場景來說很新。

此外,我在Excel 2007.

感謝您對此問題的任何意見!

回答

1

這是可能做一個公式,但不是與COUNTIFS。這個數組公式應該這樣做

=SUM(IF(('Old Data'!$A$2:$A$100=Tracking!A8)*('Old Data'!$B$2:$B$100=$E$7)*('Old Data'!$D$2:$D$100>$B$5)*('Old Data'!$D$2:$D$100<$C$5),IF('Old Data'!$E$2:$E$100-'Old Data'!$D$2:$D$100<"4:00"+0,0.5,INT('Old Data'!$E$2:$E$100)-INT('Old Data'!$D$2:$D$100)+1)))

證實CTRL + Shift + Enter

我限制的數據範圍中的行2至100,調整根據需要,整個列是可能的,但其可減緩公式相當

要計算工作日只更改到此版本:

=SUM(IF(('Old Data'!$A$2:$A$100=Tracking!A8)*('Old Data'!$B$2:$B$100=$E$7)*('Old Data'!$D$2:$D$100>$B$5)*('Old Data'!$D$2:$D$100<$C$5),IF('Old Data'!$E$2:$E$100-'Old Data'!$D$2:$D$100<"4:00"+0,0.5,NETWORKDAYS('Old Data'!$D$2:$D$100+0,'Old Data'!$E$2:$E$100+0))))

如果您將假期範圍添加到NETWORKDAYS功能,您還可以排除假期

+0

是否可以通過任意數量的行?該列表目前爲1600,並且永遠被添加到。目前的公式只是返回FALSE – Floppityflip 2012-07-31 17:50:23

+0

還有什麼*表示在您的公式中? – Floppityflip 2012-07-31 17:51:28

+1

這應該不是一個問題,例如,爲了將來的擴展將100改爲10000,我會避免滿列,因爲100萬行將導致公式變慢,*在數組公式中實際上是「AND」條件你可以使用多個IF作爲替代)。確保你輸入公式數組 - 輸入單元格,按F2然後按住CTRL和SHIFT鍵,然後按ENTER,這樣像{和}這樣的花括號出現在公式欄中的公式中 – 2012-07-31 17:55:00

相關問題