簡體   English   中英

需要Excel工作表來計算復雜的假期應計和假期時間的使用

[英]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)

  • 列A EmpName
  • B列EntryDate
  • 列C當月花費的天數
  • 月底D列上限為Accruel緩沖區
  • 每月重復C和D列

                        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個嵌套的IfSelect Case比在92個字符長的公式中沒有空格,沒有注釋等要容易得多。 如果業務邏輯發生變化,則只需要審查一個代碼塊-而不是在增長3x12個月x 50個用戶的工作表中使用數十個/百個公式。

以上功能可能需要例如的幫助

Function EndOfMonth(MyDate) as Date
Function BeginOfNextMonth(MyDate) as Date

這樣在工作表中

  • 手動輸入一個月又一個月的小時數
  • 計算新緩沖區為= MIN([oldbuffer] - [Spent] + GetMonthly(...), GetCap(...))
  • 謹慎使用相對/絕對尋址,以使公式在列/行之間“可復制”,例如
    • 向下復制時, ThisDate上的行絕對是從標頭獲得的
    • 向右復制時,每個Emp的EntryDate上的列絕對值

當然,您可以直接在工作表的單元格中使用=GetCap(...)=GetMonthly(...)以顯示中間結果並用於調試目的。

比較日期時要小心

溫馨提示

  • 3年后並非總是365x3天后
  • 檢查VBA DateSerial()函數在大於12的月份和小於0的月份中做什么
  • 下個月月底總是提前2個月減去1的前幾天......甚至在閏年GGG二月

    如果您對這些功能感到困惑,請發表更多問題。

暫無
暫無

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

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