こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

match関数とindex関数について

index関数を次のように用いて、match関数で位置を取りだすことをしたいと考えています。
=index(0/$A$1:A20="休",0)
matchは以下の上式を使って、以下のようにします。
=match(1,index(0/$A$1:A20="休",0))

この時、index内において、「休」だけでなく、「祝」も判定したいと考えた場合、上手い式の組み方は考えられるでしょうか。

ご教授願います。

投稿日時 - 2018-03-26 14:49:40

QNo.9481896

困ってます

質問者が選んだベストアンサー

index(0/$A$1:A20="休",0) ではなく、index(0/($A$1:A20="休"),0)と書きたかったのかな?

A2:A20の範囲で「休」または「祝」が出てくる最後の位置を取得でいいのでしたらこれで良いと思います。
=MATCH(1,INDEX(0/(($A$1:A20="休")+($A$1:A20="祝")),0))

投稿日時 - 2018-03-26 15:18:44

お礼

質問がざっくりといているなかで、ずばりの解決方法をありがとうございます。

投稿日時 - 2018-03-26 16:38:37

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

一応確認ですが 一番下行で該当する行番を取得したいのでしょうか。
どうも MATCHの必要性がよく分かりません。

=LOOKUP(1,0/(FIND($A$1:A20," 休祝")-1),ROW($A$1:A20))

第三引数をいじれば その後の計算も LOOKUPだけで済みます。
ただ何というか…… 最初の条件がないなら

=MAX(INDEX((A1:A20={"休","祝"})*ROW(A1:A20),0))

で済む話ですよね。

やろうとしていることをちゃんと書いた方がいいように思います。

投稿日時 - 2018-03-27 11:18:44

ANo.4

>「休」だけでなく、「祝」も判定したいと考えた場合、上手い式の組み方は考えられるでしょうか。
INDEX関数とMATCH関数に拘りますか?
INDEX関数とMAX関数の組み合わせでも良いと思います。
MATCH関数は最初に見つけた位置または最後に見つけた位置を返します。
提示の数式では最後に見つけた位置を返すようになっていますのでINDEX関数で配列の値を前処理してMAX関数で行番号を抽出する方法でも良いと思います。
=MAX(INDEX((A$1:A20={"休","祝"})*ROW(A$1:A20),0))
この数式では計算過程でエラーが発生していません。
それに対して、提示の数式はINDEX関数で0と#DIV/0!の配列をMATCH関数に渡して最後に1以下の値を見つけさせる方法なので強制的にゼロ除算のエラーを起こさせています。テクニックとしてはそれも有りと思いますが、態々エラーを起こさせる数式は如何なものでしょう?

投稿日時 - 2018-03-26 18:37:27

ANo.3

貴方が提示した式(は、実は、私にはサッパリポン!)に拘泥しなければ、…
C2: =IFERROR(SMALL(IF($A$1:$A$20=C$1,ROW(A$1:A$20)),ROW(A1)),"")
【お断り】上式は必ず配列数式として入力のこと

投稿日時 - 2018-03-26 18:23:28

ANo.2

貴方の質問を理解するために、確認させてくださいね。

「位置を取りだす」とはどういうことですか?

具体例を挙げますね。例えば、
セル A7 だけに「休」が、
セル A14 だけに「祝」が、
存在していた場合、
貴方が提示した式の
=INDEX(0/$A$1:A20="休",0)
および
=MATCH(1,INDEX(0/$A$1:A20="休",0))
の戻り値は、それぞれ何になるのが正解ですか?

投稿日時 - 2018-03-26 15:29:57

お礼

質問が分かりにくくてすみません。
具体例について、A7に「休」があり、A14に「祝」がある場合、
index(0/($A$1:A20="休"),0)は、A1からA20までの配列を成し、
A7を対象とした回答セルに「0」を表示し、その他はエラーを表示します。
これを、matchの範囲とし、検査値を1、照合の型を1とすると、「0」を表示するA7の位置、すなわち「7」を返します。
この「7」を表示させることを、「位置を取りだす」と表現しておりました。
質問は、位置を取りだしたいものが複数あった場合(例えば、「休」に加えて「祝」も・・・)に、どのようにindex内の式を表記すればよいかということでした。

投稿日時 - 2018-03-26 16:45:11