私は値の行を持っています -1,2,3,8,35,7,8,3,5,7,x
X は数式を入れたい場所です
8がXに最も近い行の値をどうにかして取得したいと思います(この場合は4行目ではなく、7行目です)
使用するmatch("8",A:A,0)
と、最初に見つかった一致が取得されます。
計算が行われるセルに最も近い一致を見つけるにはどうすればよいですか?
最後の一致が必要な場合は、A11 でこの式を使用できます
=MATCH(2,INDEX(1/(A1:A10=8),0))
[注: 値が数値の場合は 8 で問題ありません。テキスト形式の数値の場合は「8」が必要です]
....または、計算セルのどちらかの側に値がありますか (最も近いのは上か下か)?
以下を使用できます。
{=MATCH(2,1/(A1:A10=8))}
これは配列関数であることを覚えておいてください。したがって、CTRL + SHIFT + ENTER を使用する必要があります。
答えは、MATCH 関数のトリックと動作に基づいています。ozgridから説明をコピーできるようにします。
ここでの魔法は、実際には配列よりも MATCH 関数にあります。ここでは、match 関数の 2 つの興味深いプロパティが使用されています。
1) MATCH では、一致が見つからない場合、関数は配列内の最後の値の位置を返すため、=MATCH(8,{1,2,3,4,5,6,7, 6,5,4,3,2,1})、配列に 8 がないため、結果は = 13 です。
2) MATCH は最後の値の位置を返しますが、エラー (または空白の値) の位置は返さないため、=MATCH(8,{1,2,3,4,#DIV /0!,#DIV/0!,7,6,5,4,3,#DIV/0!,#DIV/0!})、11 番目の位置の 3 が最後であるため、結果は = 11 です。配列の値
したがって、daddylonglegs の数式は、配列数式で (A1:A13=B1) を使用して各セルをターゲット値に対してチェックし、セルが一致する位置に TRUE (または 1) の配列を与え、セルが一致する位置に FALSE (または 0) を指定します。休み。これで 1 を割ると、その配列が TRUE だった場所はどこでも 1 になり、#DIV/0! その配列がfalseだった場所。したがって、彼の式は次のように評価されます
=MATCH(2,{#DIV/0!,1,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,1,#DIV/0!,1,#DIV /0!,#DIV/0!,#DIV/0!,#DIV/0!})
配列に「2」が見つからず、最後の値 (1) が 9 番目の位置にあるため、MATCH は 9 を返します。