ここから本文です

指定した行数が出ない?

mel********さん

2014/5/721:09:02

指定した行数が出ない?

A・B行には
あ・1







え・2(9行目)







あ・3(17行目)

と配置し、

c1には
=ROW(INDEX(B:B,MATCH(2,B:B)-1))
と入れれば2より手前の8が出て、

E1にはその関数を使い
=MATCH(A1,(INDIRECT("$a$1:$a$"&(ROW(INDEX(B:B,MATCH(2,B:B)-1))))))
と入れれば
A1の文字数を出す事を目的とし、
この場合は3とちゃんと出ます。

しかし
C1を
=ROW(INDEX(B:B,MATCH(3,B:B)-1))
で16とちゃんと出るのに、

E1に
=MATCH(A1,(INDIRECT("$a$1:$a$"&(ROW(INDEX(B:B,MATCH(3,B:B)-1))))))

と入れると、これも3しか出ません。
16行目までなら5とカウントされると思ったのですが…

なぜこの様に表示されるのでしょうか?
また、どの様な関数を入れると良いのでしょうか?

さらに疑問なのは、
対象の文字をA1ではなく、
A4(い)にした場合もちゃんとカウントされません。
これらの理由と、適切な関数を教えてください。

閲覧数:
106
回答数:
2

違反報告

ベストアンサーに選ばれた回答

s_k********さん

編集あり2014/5/722:45:18

勘違いをされてるようですね。MATCH関数は文字をカウントするのではなく、文字の位置を返します。
最初の3は3個ではなく3行目という意味です。
ではなぜ、2番目のが16(行目)ではないかというとMATCH関数の「照合の型」を省略してあるからです。省略するとA列は昇順に並んでないと正しい答えが出ません。

文字をカウントしたい場合は COUNTIF関数です。

その前に
>=ROW(INDEX(B:B,MATCH(2,B:B)-1))

この式は =MATCH(2,B:B)-1 だけでいいです。

よって

=COUNTIF(INDIRECT("$a$1:$a$"&MATCH(2,B:B)-1),A1)

で求められてる答えがでると思います。

質問した人からのコメント

2014/5/7 22:57:58

降参 詳しい解説、ありがとうございます。
色々やり過ぎてこんがらがったり、ごっちゃになってしまいました。

もう一方もありがとうございます。

ベストアンサー以外の回答

1〜1件/1件中

a_h********さん

2014/5/722:41:06

=ROW(INDEX(B:B,MATCH(2,B:B)-1))
この式ですけど
=MATCH(2,B:B)-1
で、事足りるのでは?
ROW()関数も、INDEX関数も不要かと思います。


>=MATCH(A1,(INDIRECT("$a$1:$a$"&(ROW(INDEX(B:B,MATCH(3,B:B)-1))))))
この式も、複雑にする必要は無く下記で解決しませんか?
A1にある文字を、B列にある3の数字の一つ前まで(質問のセル値だとA1:A16)の範囲の個数という事ですから
=COUNTIF(INDIRECT("$A$1:$A$"&MATCH(3,B:B)-1),A1)

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる