簡體   English   中英

excel 2016 計算連續出現的次數

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

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