返回列表 上一主題 發帖

[發問] match函數處理重複數值,如何傳回最後符合的列?

1. G3~G5格似乎把E9誤植為E8了
2. G4格=INDEX(MATCH(2,1/(A1:A20=E9)),),似乎用=MATCH(2,1/(A1:A20=E ...
Bodhidharma 發表於 2013-3-19 01:34


剛剛又研究了一下,
=INDEX(MATCH(2,1/(A1:A20=E9)),) 會把MATCH(2,1/(A1:A20=E9))視為是一個矩陣,因此這個函數不需要用矩陣形式
於是想說比造辦理,去套=index(MATCH(1,(A1:A20=E9)*(COUNTIF(OFFSET(A1,,,ROW(A1:A20),),E9)=D9),0),),卻出現錯誤
使用評估值公式去看,發現COUNTIF(OFFSET(A1,,,ROW(A1:A20),),E9)=D9不會被視為是一個矩陣…想請教一下這是什麼原理?

TOP

確實是疏忽了.函數多樣化也是一種樂趣.用SMALL是標準做法,
避免LOOKUP的二分法可用VLOOKUP
={VLOOKUP(D9,IF({1,0},COUNTIF(OFFSET(A1,,,ROW(A1:A20),),E9),ROW(1:20)),2,)}

TOP

回復 21# Bodhidharma
函數使用不必拘泥於何種方式
只要能夠達到所需的方法都是好方法
至於您提到COUNTIF(OFFSET(A1,,,ROW(A1:A20),),E9)=D9不會被視為是一個矩陣
其中的前段(A1:A20=E9)會得到一個陣列無虞
當公式使用ENTER直接輸入,並未告知EXCEL要使用陣列,所以ROW(A1:A20)會傳回範圍的第一個儲存格列位
做為A1:A20=E9這個陣列中每個元素的相同倍數
唯有使用陣列公式,才會讓ROW(A1:A20)傳回1~20的陣列
學海無涯_不恥下問

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題