我有一組類似的資料:
Name1 Name2 Name3 Name4
Race1 1:30 1:35 1:42 1:43
Race2 2:50 1:32 1:29 1:33
Race3 1:45 1:31 1:28 2:20
我需要獲得獲勝次數最多/次數最少的人的姓名。在這種情況下,它將是 Name3。甚至可能獲得前 3 名第一名、前 3 名第二名等。
我想我必須使用 SMALL、INDEX、可能是 MIN/MAX 的組合,但絕對不確定如何將它們組合在一起......
=SMALL(B2:E4;1)
這選擇了最快的時間,我需要按行或每列處理它。
我試過這個,但它沒有做我需要的:(
=INDEX($B$1:$E$1;SMALL(IF($B$2:$E$4=MIN($B$2:$E$4);COLUMN($B$2:$E$4)-1);COLUMN(B2)-1))
uj5u.com熱心網友回復:
這似乎導致了一個相當長的公式。在 Excel 365 中使用 Let:
=LET(range,B2:E4,
nrows,ROWS(range),
ncols,COLUMNS(range),
ncells,COUNT(range),
races,INT(SEQUENCE(ncells,1,0)/ncols 1),
names,MOD(SEQUENCE(ncells,1,0),4) 1,
headers,B1:E1,
winners,SEQUENCE(nrows,1,1,ncols),
times,INDEX(range,races,names),
INDEX(headers,(MODE(INDEX(SORTBY(CHOOSE({1,2,3},races,names,times),races,1,times,1),winners,2)))))
步驟是:
- 將 2D 范圍轉換為 12 行的 1d 串列,其中每行都有一個種族索引 (1-3)、名稱索引 (1-4) 和時間
- 按比賽編號和時間排序
- 只挑出時間最短的行(每組的第一行)
- 找到最頻繁的名字索引
- 查找對應的名稱

uj5u.com熱心網友回復:
您可以使用公式輕松完成,然后使用資料透視表。
添加一個額外的列來檢查每一行的獲勝者:

最后一列的公式為:
=INDEX($B$1:$E$1;1;MATCH(MIN(B2:E2);B2:E2;0))
第二步,創建一個資料透視表,只需將欄位Races拖到行部分并將欄位Winner拖到值部分。這種方式將提供每個名稱贏得多少場比賽的計數。對表格進行排序(降序):

uj5u.com熱心網友回復:
一旦在 Office 365 中獲得 BYROW,我們就可以縮短 LET:
=LET(
rng,B2:E4,
ttl,B1:E1,
nme,BYROW(rng,LAMBDA(a,MATCH(MIN(a),a,0))),
INDEX(ttl,MODE.MULT(MMULT(nme,{1,1}))))
BYROW 回傳每一行中最低時間的相對列。

通過使用 MODE.MULT 和 MMULT,如果獲勝次數最多,我們將獲得所有名稱。在下圖中,我在 Race3 中更改了 Name2 的結果,因此他們獲勝,在每場比賽中給出不同的獲勝者。

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/390965.html
上一篇:對共享一個公共索引值的多行求和
