Excel公式詳解:月損失時間計算

2021-03-06 事業有成信息諮詢

2020年對一個運行了20年系統進行了重構,最近功能都開發完了甲方領導又雙叒叕提出了個合理、必要、重要……的需求。

簡單描述一下,系統裡面針對現行業務基層填報的故障表(Excel格式)做了導入,但是發現這個表需要優化,主要目的是解決故障損失時間計算不準的問題。

拋去系統資料庫要加欄位、界面要重做、導入導出要重做等等僅增加工作量的任務不談,更麻煩的是用系統實現計算的話要加一系列的邏輯,各種校驗、計算等等,伴隨需求的變化,邏輯裡面的一些數值最好還得做成可配置……

為了變更管理制度方便,為了用戶錄入方便,為了開發方便,為了維護方便,為了程式設計師的發量,更重要的是為了提升一下Excel水平,我決定換個思路,在Excel裡面算當月損失時間,系統只做計算結果的導入。

通過跟甲方親切友好的溝通和討論,對故障表上報模板進行了一些修改;為了方便寫公式,很奢侈的用了兩個單元格分別記錄年份和月份。其他與公式相關的三個單元格分別是故障發生時間、故障解除時間、故障扣除時間。雖然同樣叫時間,但前兩個是時間點,最後一個是時間段。Excel部分截圖如下:

簡單說一下計算規則:首先,統計周期是上月25日8點到當月25日8點:其次,不考慮扣除的話,總的損失時間為解除的時間點-發生的時間點;第三,扣除時間指的是因不可抗力、油田甲方認可等不計算到故障損失時間中的時間;第四,計算當月損失時間時僅統計在當月統計周期內的損失時間。

窮舉了一下,4種情況4個公式:

當月發生當月解除:損失時間(h)=(解除時間點-發生時間點)×24-扣除時間(h)

當月發生當月未完:損失時間(h)=(統計周期終點-發生時間點)×24-扣除時間(h)

之前發生當月解除:損失時間(h)=(解除點-統計周期起點)×24-扣除時間(h)

之前發生當月未完:損失時間(h)=(統計周期終點-統計周期起點)×24-扣除時間(h)

我花兩秒鐘時間找了一下規律,總結出了以下通用公式:

當月損失時間=(min[統計周期終點\解除時間]-max[統計周期起點\發生時間])×24-扣除時間

然後就是喜聞樂見的構建Excel公式的環節。MIN()和MAX()函數是現成的,發生、解除、扣除時間直接取單元格錄入的值,只需要構造統計周期起點和終點。

構造統計周期終點使用了兩個函數,DATE(年,月,日)和TIME(時,分,秒),直接加即可,年、月分別取兩個錄入的單元格,其他的直接預設好,25日8:00:00。

最後只剩下了「統計周期起點」,這裡從公式列表裡找到了EOMONTH(日期,數字)函數,這個函數返回的是「日期」加上對應「數字」個月份的那個月的最後一天的日期。「數字」填-1就是上個月,用DAY()函數處理下就得到上個月的天數,最後在Excel裡面,統計周期起點 = 統計周期終點-上個月天數

總之在損失時間下面的單元格裡面寫了一行公式:

=(MIN(DATE(B2,D2,25)+TIME(8,0,0),G6)-MAX(DATE(B2,D2,25)+TIME(8,0,0)-DAY(EOMONTH(DATE(B2,D2,25),-1)),F6))*24-B15

然後就實現了自動計算……

相比系統算的好處包括,用戶可以直接看到計算結果、統計時間段變化了好維護、系統不用做複雜的處理……

相關焦點

  • Excel公式技巧35: 計算工作日天數
    學習Excel技術,關注微信公眾號:excelperfect 本文提供了一個公式,能夠計算多種情形下某個月的工作日天數
  • Excel函數公式:實用技巧、用名稱計算、給公式添加備註,你確定不來看看
    一、公式中添加備註。目的:將「年末福利紅包做到計算到年末工資表中」,並加備註。方法:在計算公式的末尾添加:+N("說明性文字")。解讀:函數N可以將字符串轉換為0,所以+N("說明性文字")附加到公式中,其結果不變。二、用名稱計算結果。目的:用名稱參與公式的計算。
  • Excel公式練習21:在單元格列區域中輸入連續的數字
    微信公眾號:excelperfect本文系因違規而刪除的2017年11月5日推送文章經修改後重新推送,已看過的朋友可直接飄過
  • Excel公式練習15:求2018年母親節的日期
    微信公眾號:excelperfect本次的練習是:如何使用公式求出2018年母親節的日期?
  • Excel公式技巧53: 使用TEXTJOIN函數反轉文本
    學習Excel技術,關注微信公眾號:excelperfect 在《Excel公式技巧48:生成從大到小連續的整數
  • Excel公式練習11:顛倒單元格區域中的數據
    微信公眾號:excelperfect 本次的練習是:
  • Excel函數公式:Excel 2016新增函數DATEDIF超級實用技巧解讀
    時間日期,是我們日常辦公中必不可少的部分,如何快速的計算兩個日期之間相差的年、月、日等,在Excel2016版本以前,是比較難以實現的,但是如果用Excel 2016 的新增函數DATEDIF來計算,將會非常的簡單。
  • Excel公式練習3:求連續數據之和的最大值
    微信公眾號:excelperfect 本次的練習是:
  • 專題二:行列式的計算公式
    專題二:行列式的計算公式本部分主要介紹行列式計算的一些公式,這些公式基本上都與分塊矩陣有關.
  • 太陽能路燈配置的計算公式
  • Excel計算固定資產折舊,其實很簡單!
    VIP學員的問題,要將購買日期轉變成標準日期,在計算已提折舊期數。
  • 【知識】18位號碼身份證校驗碼的計算公式
    從左至右,第1-2位為省級行政區劃代碼,第3-4為為地級行政區劃代碼,第5-6位為縣級行政區劃代碼,第7-10位為出生年份,第11-12位為出生月份,第13-14為出生日期,第15-17位為順序碼,表示在同一地址碼所標識的區域範圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性,第18位為作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-
  • Excel函數公式:SUMIF函數使用技巧範例合集
    二、計算「OPPO」的銷量。方法:在對應的目標單元格中輸入公式:=SUMIF(C3:C11,"OPPO",D3:D11)。三、計算除「OPPO」之外的銷量。四、計算大於「50」的銷量之和。五、計算低於平均值的銷量之和。
  • Excel教程:寫出3000條公式後,發現80%的高級公式都離不開它們
    相比於第一個套路,第二個會稍難一點,但是這個套路中所用到的思路和方法確是在很多高級公式中經常用到的。學會了它們,有助於提升你運用公式的能力。數據源照舊,如下圖所示,要求統計出不重複的客戶數:在昨天我們掌握了破解公式的方法後,今天我們再來看看計算不重複數據個數的第二個公式套路。這個公式是數組公式,完成輸入後記得按CTRL+SHIFT+回車鍵,公式兩邊會自動出現大括號。
  • Excel函數公式:你不知道的SUMPRODUCT函數
    目的:計算「二班」的人數。目的:計算二班的優秀人數。目的:計算「二班」優秀人總分。目的:計算「李四」銷售「滑鼠」的提成總額。2、輸入公式:=SUMPRODUCT((D3<$D$3:$D$8)*1)+1。3、Ctrl+Enter填充。
  • Excel公式練習68: 從數據區域提取值並按降序排列
    學習Excel技術,關注微信公眾號:excelperfect 本次的練習是:如下圖1所示,在工作表中存儲著捐款數據
  • 「四項指標、三個公式」搞定環保稅計算!
    如何計算環境保護稅?環境保護稅的稅額計算初看有點專業、有點複雜,但大家只要抓住「四項指標、三個公式」,就可以快捷準確地計算出環境保護稅稅額。「四項指標」,是指汙染物排放量、汙染當量值、汙染當量數和稅額標準,這四項指標是計算環境保護稅的關鍵,下面為大家逐一介紹:第一,汙染物排放量。環境保護稅法規定了四種計算汙染物排放量的方法,按順序使用:一是對安裝使用符合國家規定和監測規範的汙染物自動監測設備的,按自動監測數據計算。
  • 一文掌握:13 類兒科常用計算公式
    為了記住兒科臨床常用的一些計算公式,我寫了這篇文章,發到丁香園共享。提醒:公式只是參考,臨床是有變化的。
  • Excel教程:這2個Excel公式,搞定同事半天的工作,太好用了!
    今天就分享兩個可以統計家庭人口數的公式套路,想一起學的趕緊準備開始吧。  第二個方法就是修改公式,利用IFERROR函數單獨計算最後一戶的人口數,公式為:=IFERROR 以上就是統計家庭人口數的第一個公式套路,這個公式完全是自上而下計數的邏輯,相信經過講解大家應該是可以理解的,但是第二個公式套路就完全是逆向思維了,是自下而上的計數邏輯,公式看上去更加簡短了,但是理解難度卻增加了。
  • Excel函數公式:邏輯函數IF、AND、OR、NOT、IFERROR實用技巧解讀
    方法:在目標單元格中輸入公式:=IF(OR(C3>=60,D3>=60,E3>=60),"及格","不及格")。方法:在目標單元格中輸入公式:=IF(NOT(E3>=60),"不及格","及格")。