![](/img/trans.png)
[英]I need to create an excel formula to calculate vacation time with maximum accrual of 240hours
[英]Need Excel Sheet to Calculate Complex Vacation Accrual and Use of Vacation Time
我已經為此進行了一段時間的嘗試,並嘗試了不同的樣式...我需要開發一個跟蹤電子表格(適用於50名員工),該電子表格將根據以下參數計算應計休假時間和所使用的休假時間:
*在公司工作不到三年但超過90天周年紀念日的員工(他們開始應聘時)(此事還有其他警告……應聘日是指該月之后的當月的第一個月) 90天)[我在excel工作表中算出了這90天的項目],它將在以下時間產生:-月底每月4小時,他們可以存儲的最大上限為72小時(但如果他們使用休假時間並降至72小時以下,他們最多可以繼續累積72小時...)
*在公司工作超過3年但不到6年的員工會保留之前的假期,並從這里開始累積:-月底每月6.8個小時,最高上限為122.4他們可以存儲的小時數(但是如果他們使用休假時間並低於122.4小時,則可以繼續累積最多122.4小時...)
*在公司工作了6年及以上的員工可以休假,並從這里開始累積:-月底每月10個小時,最多可以存儲180個小時(但如果他們使用休假時間並低於180小時,則可以繼續累積最多180小時。...)
是的,我需要能夠扣除使用的休假時間。
是否有人對布局或可以使用這些功能的公式提出任何建議? 感謝您對我還能使用的其他任何建議或建議!
我已經創建了一張測試表,並根據這些條件在第一組中進行了累積,並從第二組規則開始(3年以上)。
但是,當我在第一個保單上最多累積72小時時,如果他們使用休假並再次落在72小時上限之內,它將不再正確累積。
我知道這是一項過於復雜的政策,但這是公司想要的,他們不會讓步。...任何幫助或建議,我們都感激不盡。 我知道我的工作表不好。.但是我正在嘗試選項。
以下是我90天使用的方程式:
=IF(F2<TODAY()-90, F2+90, "90 Day Period")
然后得到我使用后一個月的第一天:
=IF(G2="90 Day Period","N/A",DATE(YEAR(G2),MONTH(G2)+1,1))
我嘗試使用第一條規則的產生(但是它有問題...):
=IF(N2="N/A","N/A",IF(N2<=36,MIN(72,((N2*4)-P2),72),(72-P2)))
對於第二條規則:
=IF(AND(N2>36,N2<=72),MIN(122.4,((N2-36)*6.8)+Q2-S2),0)
讓
例
01-Sep-2013 01-Oct-2013
EmpName EntryDate spent buffer spent buffer ... etc ...
.-------.-----------.-----------.------.-----------.------.
me 01-Jan-2010 0 12 0 18.8
you 01-Jun-2013 0 4 0 4
為了不獲取意大利面條式,我建議在VBA中創建一些用戶定義的函數,例如
Function GetCap(EntryDate, ThisDate) As Single
Function GetMonthly(EntryDate, ThisDate) As Single
根據經驗,在工作表中調試/維護2-3個嵌套的If
或Select Case
比在92個字符長的公式中沒有空格,沒有注釋等要容易得多。 如果業務邏輯發生變化,則只需要審查一個代碼塊-而不是在增長3x12個月x 50個用戶的工作表中使用數十個/百個公式。
以上功能可能需要例如的幫助
Function EndOfMonth(MyDate) as Date
Function BeginOfNextMonth(MyDate) as Date
這樣在工作表中
= MIN([oldbuffer] - [Spent] + GetMonthly(...), GetCap(...))
ThisDate
上的行絕對是從標頭獲得的 EntryDate
上的列絕對值 當然,您可以直接在工作表的單元格中使用=GetCap(...)
和=GetMonthly(...)
以顯示中間結果並用於調試目的。
比較日期時要小心
溫馨提示 :
下個月月底總是提前2個月減去1的前幾天......甚至在閏年GGG二月
如果您對這些功能感到困惑,請發表更多問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.