主頁 > 軟體工程 > 在excel中對帶有排除項的sumif進行排序

在excel中對帶有排除項的sumif進行排序

2022-11-01 20:35:36 軟體工程

我有自動計算每個專案的損益表。目前他們使用的是固定工資,但我想改變它以納入未來的工資變化。專案持續時間是根據 E2 中的持續時間引數從 L1 排序的,使用=EDATE($C$2, SEQUENCE(1, $E$2, 0))

L 列中的每個單元格對持續時間進行排序,計算相關值。

在excel中對帶有排除項的sumif進行排序

工資成本公式參考了下面的資料集,該資料集也是從另一張表中的資料自動生成的,=FILTER(FILTER(AllStaffProjectAllocationTbl,AllStaffProjectAllocationTbl[Project Code Name]=B2), {1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0})并且可以具有可變數量的條目:

在excel中對帶有排除項的sumif進行排序

當前用于計算 L7 中的工資成本(來自第一張圖片)的公式是這里有人幫助我的,=MMULT(SEQUENCE(1,ROWS($A$18#),1,0),($L$1#>=OFFSET($A$18#,0,3,,1))*($L$1#<=OFFSET($A$18#,0,4,,1))*OFFSET($A$18#,0,5,,1))并使用了第二張圖片中的 F 列(我希望將其洗掉)。

我在 EmployeeSalaryTbl 表中有一組新的資料用于這里的薪水(我現在必須添加 31/12/9999 的編造結束日期,以確保下面的計算作業,理想情況下這將是空白的,我d 在以下計算中檢查):

在excel中對帶有排除項的sumif進行排序

我已經開始修改 L7 中的 MMult 函式來執行以下操作:

  1. 專案持續時間的順序
  2. 檢查從 A18 起的員工是否在從 L1 開始的給定月份的專案中
  3. 如果是,則從 EmployeeSalaryTbl 中找到該日期范圍內的薪水,并將它們全部加在一起。

這是我到目前為止所擁有的,但不幸的是它給了我一個錯誤:

=MMULT(SEQUENCE(1,ROWS($A$18#),1,0),IF(AND(($L$1#>=OFFSET($A$18#,0,3,,1))*($L$1#<=OFFSET($A$18#,0,4,,1))),SUMIFS(EmployeeSalaryTbl[Salary Monthly], EmployeeSalaryTbl[Employee],$A$18#, EmployeeSalaryTbl[Salary Start Date],"<="&$L$1#, EmployeeSalaryTbl[Salary End Date],">="&$L$1#),0))

圖 2 定義的專案資料為:

員工 角色 紀律 開始日期 結束日期 月薪
鮑勃 高級程式員 編程 2020 年 12 月 1 日 06/05/2020 4,333 英鎊
戴夫 中級程式員 編程 2020 年 1 月 2 日 2020 年 5 月 30 日 3,167 英鎊
彼得 高級程式員 編程 2020 年 1 月 1 日 2020 年 1 月 31 日 4,583 英鎊
杰克 初級程式員 編程 2020 年 1 月 2 日 2020 年 6 月 30 日 2,083 英鎊
理查德 資深藝術家 藝術 2020 年 1 月 3 日 2020 年 4 月 30 日 3,750 英鎊
羅德尼 領導質量檢查 質量保證 2020 年 1 月 3 日 2020 年 6 月 30 日 4,333 英鎊
專案 1 - 雇用 1 資深制片人 生產 2020 年 1 月 2 日 2020 年 5 月 30 日 3,458 英鎊
羅杰 質量保證 質量保證 2020 年 1 月 1 日 2020 年 4 月 30 日 1,667 英鎊
衛斯理 中級程式員 編程 2020 年 1 月 2 日 2020 年 5 月 31 日 3,750 英鎊
雷切爾 資深藝術家 藝術 2020 年 1 月 1 日 2020 年 6 月 30 日 3,333 英鎊
專案 1 - 雇用 2 首席程式員 編程 2020 年 1 月 1 日 2020 年 7 月 31 日 4,417 英鎊

EmployeeSalaryTbl 中的資料是:

員工 工資開始日期 工資結束日期 薪水 月薪 每日工資
鮑勃 2020 年 1 月 1 日 2021 年 3 月 31 日 52,000 英鎊 4,333 英鎊 199 英鎊
鮑勃 2021 年 1 月 4 日 2022 年 3 月 31 日 55,000 英鎊 4,583 英鎊 211 英鎊
鮑勃 2022 年 1 月 4 日 9999 年 12 月 31 日 58,000 英鎊 4,833 英鎊 222 英鎊
戴夫 2020 年 1 月 1 日 2021 年 3 月 31 日 38,000 英鎊 3,167 英鎊 146 英鎊
戴夫 2021 年 1 月 4 日 9999 年 12 月 31 日 42,000 英鎊 3,500 英鎊 161 英鎊
衛斯理 2020 年 1 月 1 日 9999 年 12 月 31 日 45,000 英鎊 3,750 英鎊 173 英鎊
杰克 2020 年 1 月 1 日 9999 年 12 月 31 日 25,000 英鎊 2,083 英鎊 96 英鎊
理查德 2020 年 1 月 1 日 9999 年 12 月 31 日 45,000 英鎊 3,750 英鎊 173 英鎊
羅德尼 2020 年 1 月 1 日 9999 年 12 月 31 日 52,000 英鎊 4,333 英鎊 199 英鎊
專案 1 - 雇用 1 2020 年 1 月 1 日 9999 年 12 月 31 日 41,500 英鎊 3,458 英鎊 159 英鎊
羅杰 2020 年 1 月 1 日 9999 年 12 月 31 日 20,000 英鎊 1,667 英鎊 77 英鎊
史蒂夫 2020 年 1 月 1 日 9999 年 12 月 31 日 27,000 英鎊 2,250 英鎊 104 英鎊
雷切爾 2020 年 1 月 1 日 9999 年 12 月 31 日 40,000 英鎊 3,333 英鎊 153 英鎊
彼得 2020 年 1 月 1 日 9999 年 12 月 31 日 34,000 英鎊 2,833 英鎊 130 英鎊
莎拉 2020 年 1 月 1 日 9999 年 12 月 31 日 22,000 英鎊 1,833 英鎊 84 英鎊
克洛伊 2020 年 1 月 1 日 9999 年 12 月 31 日 33,000 英鎊 2,750 英鎊 127 英鎊
馬修 2020 年 1 月 1 日 2021 年 3 月 31 日 23,000 英鎊 1,917 英鎊 88 英鎊
馬修 2021 年 1 月 4 日 9999 年 12 月 31 日 28,000 英鎊 2,333 英鎊 107 英鎊
專案 1 - 雇用 2 2020 年 1 月 1 日 9999 年 12 月 31 日 36,000 英鎊 3,000 英鎊 138 英鎊

uj5u.com熱心網友回復:

使用您的輸入資料,并假設沒有 excel 版本限制(未在問題中指定),在單元格H2中輸入以下公式:

=LET(namePrj, TB_Prj[Employee], startPrj, TB_Prj[Start Date], endPrj, 
 TB_Prj[End Date],name, TB_Roster[Employee],start, TB_Roster[Salary Start Date], 
 end, TB_Roster[Salary End Date],salary, TB_Roster[Salary Monthly], 
 SOMs, H1:S1, EOMs, EOMONTH(SOM,0),
 BYCOL(SOMs, LAMBDA(SOM, LET(EOM, EOMONTH(SOM,0), 
 namesActive, FILTER(namePrj, (startPrj <= SOM) * (endPrj >= EOM)),
  cost, FILTER(salary, (start <= SOM) * (IF(end > 0, end, EOM) >= EOM) *  
    (ISNUMBER(XMATCH(name,namesActive))),0), sum(cost)
  )))
 )

兩個Excel 表被定義為具有動態范圍:TB_Prj專案資訊和TB_Roster工資資訊。月份資訊水平生成如下H1

=EDATE(DATE(2020,1,1), SEQUENCE(1, 12, 0))

它生成該月的第一天。在公式中表示為SOMs(月初)。同樣,我用它EOMs來表示每個相應的月末。

輸出生成一個1x12陣列作為結果。

這是輸出:

在excel中對帶有排除項的sumif進行排序

僅顯示部分工資表 ( TB_Roster)

備注

請檢查結果,您的資料需要清理,例如薪水表中的彼得有兩個重疊日期間隔的條目。

如果您不能使用表格(例如輸入基于 SPILL 公式,如FILTER),則可以使用范圍。您可以定義以下兩個資料集范圍:prjSetrosterSet,然后像這樣定義每個對應的列:INDEX(rng,,x), wherex表示每個范圍上的對應列號 where rngisprjSetrosterSet例如name變數可以這樣定義:

namePrj, INDEX(prjSet,,1)

解釋

使用Excel 表格具有動態范圍,因此在添加其他資訊時不需要更改公式。我們使用LET函式使公式更易于維護,定義所需的輸入和中間結果。

BYCOL用于迭代所有SOMs值。對于每個月初 ( SOM),我們執行以下操作:

從活動專案中查找 ,namesActive檢查專案的開始時間是否早于或等于,SOM專案的結束時間是否大于或等于EOM如果專案表中沒有名稱滿足條件,則FILTER回傳錯誤 ( #CALC!),因為 Excel 中不允許使用空陣列。如果要處理這種情況,則需要調整公式(使用第三個輸入引數FILTERIF計算條件cost)或更好地清理資料。我不希望在給定的月份在公司層面沒有任何活躍的專案。

獲得姓名串列后,我們將轉到第二個 Excel 表 ( TB_Roster) 以查找基于startend日期的有效薪水。

我們在 中處理空值end,假設如果沒有值(資料被格式化為日期,所以空意味著0)。以下IF條件確保它(在第二次FILTER呼叫中):

(IF(end > 0, end, EOM) >= EOM)

因此,如果end陣列是正數(日期表示為從 開始的正整數0,即整數),則分配一個值,因此我們使用該值,否則 ( 0) 將其替換為EOM當沒有結束日期時,條件始終為真(考慮所有end值)。IF與陣列一起作業,它評估陣列每個元素的條件并回傳每個元素的相應值。通過這樣做,我們將空值的情況固定為有效情況,因此無需使用虛構的 date

與 ,相關的條件確保我們僅按上一次呼叫中的名稱進行XMATCH過濾(專案表中的有效名稱,即)。此過濾器 ( ) 的結果滿足所有條件并回傳所有匹配的月薪。nameFILTERnamesActivecost

如果根據過濾條件沒有匹配,我們回傳0(但可以使用另一個值,例如NA())。為此,我們使用FILTER函式的第三個輸入引數。

最后,我們將所有符合條件的薪水相加。

獎勵:檢查區間一致性

基于對問題的回答:在excel中對帶有排除項的sumif進行排序

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524482.html

標籤:擅长excel公式

上一篇:Excel過濾器公式用于陣列中的多個條件和值

下一篇:僅在可見行上隱藏不匹配條件的行非常慢,盡管使用陣列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more