[英]excel 2016 count consecutive occurrences
Excel 2016
在 Excel 中,我試圖計算所有重復了最后一個原因的相同工作。
但是,如果重復,我只需要最后一個原因和該原因的計數。
如果原因發生變化,則計數停止。
date job reason
31/10/2017 barr skip
30/10/2017 sheep run
29/10/2017 pig run
28/10/2017 barr skip
27/10/2017 barr skip
26/10/2017 sheep run
25/10/2017 pig skip
24/10/2017 barr run
23/10/2017 car skip
22/10/2017 cow run
21/10/2017 car run
20/10/2017 cow skip
20/10/2017 barr skip
因此,例如 table barr 在 31 日、28 日和 27 日有一個跳過。 24 日有一個作業運行,因為無需進一步計算。 所以結果會是。
Job Last Reason EMV
barr Skip 3
sheep run 2
pig run 1
car run 1
cow skip 1
另請注意,此數據的長度約為 800k。 所以需要高效,不能訪問任何形式的任何數據庫。
我試過countifs但沒有成功。
首先,我假設您有某種方法可以創建 2 萬個作業列表。 有很多方法 - 如果您不需要完全動態的數據,可以使用包含大量數據的數據透視表。
在我看來,獲得最后一個原因計數的最佳方法是不要使用蠻力數組公式方法,因為它太慢了。 最好使用老式的數據處理方法 - 但我會這么說,因為我是一個老式的數據處理人員。
第1步
按作業對數據進行排序。 Excel 排序非常快而且很穩定,所以你會得到這個
date job reason
31/10/2017 barr skip
28/10/2017 barr skip
27/10/2017 barr skip
24/10/2017 barr run
20/10/2017 barr skip
23/10/2017 car skip
21/10/2017 car run
22/10/2017 cow run
20/10/2017 cow skip
29/10/2017 pig run
25/10/2017 pig skip
30/10/2017 sheep run
26/10/2017 sheep run
請注意,原因在每個作業中仍然按順序排列。 假設這是在一個名為“jobs”的工作表中。
第2步
然后你可以使用一些快速簡單的公式來得到你想要的結果。
在 B2 開始工作
=MATCH(A2,jobs!B:B,0)
C2中的第一個原因
=INDEX(jobs!C:C,B2)
D2 中每個作業的原因計數
=COUNTIF(jobs!B:B,A2)
與 E2 中第一個原因不同的原因索引
=IFERROR(MATCH(TRUE,(INDEX(jobs!C:C,B2):INDEX(jobs!C:C,B2+D2-1)<>C2),0),D2+1)
(這是一個數組公式,但只需搜索當前工作的空間,根據您的數字平均說大約 40 個原因)
F2中第一個原因的重復次數
=E2-1
請注意,我將列表中的第一個原因稱為第一個原因,但按時間順序是最后一個原因,因為您的列表是按時間倒序排列的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.