我有一個包含 1000 名用戶、他們分配的設備以及設備的生命周期結束日期的串列。
我需要將每個人的最新設備(生命周期的最遠結束日期)標記為主要設備,將所有其他設備標記為次要設備。問題在于重復用戶,其中一些用戶擁有多個設備。例如,如果某人有 3 臺設備,我需要將其中 2 臺設備標記為次要設備,并將最新的一臺設備標記為主要設備。
我希望這是有道理的。我附上了我正在嘗試實作的示例螢屏截圖。

嘗試使用 UNIQUE 和 COUNTIF 以及資料透視表,但我無處可去
uj5u.com熱心網友回復:
將此公式放入D1。它的作用是獲取資料范圍A1:C8組成一個QUERY,按照第1個:User,第2個:EndDate(降序排列)排列資料,
比它使用 FILTER 函式用 BYROW 函式的行資料過濾查詢,以確定每行的日期是否等于查詢過濾結果的第一個日期列,如果為 true,則應用“Primary” ,否則應用“次要”。
如果您需要更改資料范圍,只需更改代碼中最后一行的 ref.range 即可。
=LAMBDA(DATA,
LAMBDA(QUERY,
LAMBDA(USER,PROFILE,DATE,
BYROW(DATA,
LAMBDA(ROW,
IF(INDEX(ROW,,1)="User",
"Device Usage",
IF(INDEX(ROW,,3)=INDEX(FILTER(QUERY,USER=INDEX(ROW,,1)),1,3),"Primary","Secondary")
)
)
)
)(INDEX(QUERY,,1),INDEX(QUERY,,2),INDEX(QUERY,,3))
)(QUERY({DATA},"ORDER BY Col1,Col3 DESC"))
)(A1:C8)
剛剛注意到有2個未使用的變數,代碼可以簡化一下:
=LAMBDA(DATA,
LAMBDA(QUERY,
LAMBDA(USER,
BYROW(DATA,
LAMBDA(ROW,
IF(INDEX(ROW,,1)="User",
"Device Usage",
IF(INDEX(ROW,,3)=INDEX(FILTER(QUERY,USER=INDEX(ROW,,1)),1,3),"Primary","Secondary")
)
)
)
)(INDEX(QUERY,,1))
)(QUERY({DATA},"ORDER BY Col1,Col3 DESC"))
)(A1:C8)
這也可以在沒有 QUERY 函式的情況下完成:
=LAMBDA(DATA,
LAMBDA(USER_COL,
BYROW(DATA,LAMBDA(ROW,
LAMBDA(USER,DATE,
IF(USER="User",
"Device Usage",
IF(DATE=MAX(INDEX(FILTER(DATA,USER_COL=USER),,3)),"Primary","Secondary")
)
)(INDEX(ROW,,1),INDEX(ROW,,3))
))
)(INDEX(DATA,,1))
)(A1:C8)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/529345.html
標籤:谷歌表格重复谷歌表格公式
