網友問到,在 Excel 中如何設計依年資算出特休天數?計算規則如下:(參考下圖)
(1) 6個月以上未滿1年:特休3天
(2) 1年以上未滿2年:特休7天
(3) 2年以上未滿3年:特休10天
(4) 3年以上未滿5年:特休14天
(5) 5年以上未滿10年:特休15天
(6) 滿(含)10年以上,每增一年加給1天,最多給至30天為止
【公式設計與解析】
首先,你要先建立如儲存格E1:F7的資料清單,目的是要給 VLOOKUP 函數查表之用。
接著,輸入公式:
儲存格C2:=VLOOKUP(B2,$E$2:$F$7,2,TRUE)+INT((B2>=10)*(B2<=24)*(B2-9))+(B2>24)*15
複製儲存格C2,貼至儲存格C2:C23。
(1) VLOOKUP(B2,$E$2:$F$7,2,TRUE)
在 VLOOKUP 函數中藉由查表,查出年資對應特休天數。
(2) INT((B2>=10)*(B2<=24)*(B2-9))
若年資在 10~24 之間,則每一年的特休加 1。(B2>=10)*(B2<=24)之中的『*』,乃相當於執行兩個條件(B2>=10 和 B2<=24)的邏輯 AND 運算,傳回 TRUE/FALSE 。當在執行『*(B2<=24)』的『*』,及在執行算術運算,會將 TRUE/FALSE 轉換為 1/0。
(3) (B2>24)*15
由第(2)式處理10年~24年,每一年增加 1 天,若年資大於 24 年者,要再加 15,以補足年休30天。
【補充說明】
若要在B欄中輸入年和月的資料,可以將儲存格的數值格式定為:?0 ??/12。
這是分數的格式,其中整數部分對齊 2 位數,而小數部分則以 12 為分母。輸入資料時,整數和分數之間要有一個空白鍵。
【延伸閱讀】
參考:本部落格中其他關於 Excel VLOOKUP 函數的應用
* Excel-根據成績評定的對照表給予評定(VLOOKUP,MATCH,INDEX,CHOOSE)
* Excel-用XLOOKUP取代VLOOKUP,HLOOKUP,INDEX
* Excel-依規則調整顯示的時間(TIME,VLOOKUP)
* Excel-依指定的數量列出項目(VLOOKUP,INT,MOD)
* Excel-使用VLOOKUP函數查詢文字和數值的變通技巧

您好!! 想請教B欄位的年資,要如何計算出來!! 感謝您!
文末有提到: 若要在B欄中輸入年和月的資料,可以將儲存格的數值格式定為:?0 ??/12。 這是分數的格式,其中整數部分對齊 2 位數,而小數部分則以 12 為分母。輸入資料時,整數和分數之間要有一個空白鍵。 如果A日期輸入 102 6/12(表示102年6月),B日期輸入 105 8/12(表示105年8月),當 B-A 時,會得到 3 2/12(表示3年2月)。
您好,感謝您提供的公式 不過10年開始是不是有少一天啊? 10年是16天,但是照著公式打是顯示15天 如果是我自己搞錯了,先跟您說聲抱歉喔
沒錯!已更正。因為誤以為第11年才開始加1。謝謝你。
原本公式試算表滿10年還是15天,反而要滿11年才是16天,這地方是錯的喔! INT((B2>=10)*(B2<=25)*(B2-10)) 版大我修正後公式為修正後 INT((B2>=10)*(B2<=25)*(B2-9)
沒錯!已更正。因為誤以為第11年才開始加1。謝謝你。
不過年資滿24年即享有30天特休了,請問該怎麼調整公式?
這個例子中的公式即是以年資滿24,即得30天休假。 (請看圖中說明(5)5年以上未滿10年:特休15天。和(6)滿(含)10年以上,每增一年加給1天,最多給至30天為止。)
不過輸入公式那個段落的內容有點看不懂, 公式寫道:INT((B2>=9)*(B2<=25)*(B2-10)) 說明(2)的內容則是: INT((B2>=10)*(B2<=25)*(B2-9)) 請問哪一個才是對的?
我把圖文修改成一致了。以INT((B2>=10)*(B2<=25)*(B2-9))為準。
年資剛滿25年,公式得出的結果是31天, 但是再多一個月變成 25 1/12之後,又變回30天了, 請問這部分該如何修正?
(應該是年資10~24天者,每年多一天休假;若超過24天,因滿30天休假,應該不再增加。) 公式的寫法有很多種,我重新調整了公式如下: 儲存格C2:=VLOOKUP(B2,$E$2:$F$7,2,TRUE)+INT((B2>=10)*(B2<=24)*(B2-9))+(B2>24)*15 你再看看。 謝謝你檢查出bug。
你好,如果工作滿1年有7天假期,工作不滿3個月0天假期,工作滿3個月可以按比較得到7天的假期,應該怎麼去設計公式才可以只計算工作滿3個月的員工假期日數? 比例計算公式是 受僱天數/365天 * 7=得到的假期 (進位至整數) 想了好久,可以教教我嗎🙏🏻
請參考:http://isvincent.pixnet.net/blog/post/47280522
https://www.1111.com.tw/dayoff/discussTopic.asp?cat=vacationQuestion&id=121058 依照此說明,歷年制計算部分好像有出入 106.7.1到職→那此人整個107年度(107.1.1~107.12.31)應有6.5天的特休假才對 可煩請版主解惑?
請問如果我要計算今年沒休完的天數再加上新的一年增加的天數要怎麼列公式呢? 比如106/4/17入職,期間只休了一天,107/4/18再多加7天就變成2+7=9 麻煩版主幫我解惑~~謝謝
假設是 年=特休 0.5=3 1=7 3=8 6=9 9=10 12=11 15=12 18=13 19=14 滿(含)18年以上,每增一年加給1天,最多給至30天為止 這樣公式可以計算出來嗎?我自己換算好久都用不出相對應的天數
假設資料在儲存格A1,公式:=IF(A1>30,25,IF(A1>18,A1-5,VLOOKUP(A1,{0,0;0.5,3;1,7;3,8;6,9;9,10;12,11;15,12;18,13},2,TRUE)))
您好,請問如何使用公式計算特休使用期間? 例:a同仁到職日為100/9/16,我需要計算每位同仁當年度特休的起迄日…有辦法設公式嗎?
青蛙學長?
所指為何?
您好,想請問B欄位到職日期如遇12月,會自動進到下一年度,有沒有辦法解決呢? (例如 2018 12/12 會變成 2019 00/00) 另外想請問,這個做法好像只到月份,沒有細算到日期,想以到職日做基準的話該如何處理呢?謝謝您!
B欄的內容為「年數 月數/12」,並非西元年日期的概念。12/12即為1,所以會進位。
老師您好,請問針對B欄位的部份,是否可以透過日期公式直接轉換為 109 8/12的格試呢? 同時我們的計算是到7/31,所以可以設定為到職日、結算日,後呈現為多少年、多少月…的內容,再來計算特休天數呢?
老師您好: 年和月的資料,可以將儲存格的數值格式定為:?0 ??/12。 我計算的年資設定格式後,部份會變成加一個月或多一個月 例如 A=> 年資5年9個月15天就會變成 5 8/12 B=> 年資0年3個月22天就會變成 0 4/12 請問如何設定?謝謝您!
您好: 請問歷年制有特定的公式能套用計算嗎? 謝謝您~