- PR -

エクセル関数の検索について

1
投稿者投稿内容
Teraterm
常連さん
会議室デビュー日: 2007/02/15
投稿数: 25
投稿日時: 2008-09-03 13:49
エクセルの関数についてご教授下さい。

以下のように文字列が記入されています。

(列A)
りんご
a
b
c
(w)
(k)
!
みかん
u
b
c
(w)
(k)
!

○”りんご”の行から”!”の行までを検索して、文字列”a”があるかを確認したい
○”みかん”の行から”!”の行までを検索して、文字列”a”があるかを確認したい
○()で記載している文字列は場合によって記入されているため、毎回同じ行数ではない

このような条件がある時に、関数で要件を満たす事はできますでしょうか?
イメージ的には、以下のようにできればと思ってます。

1.A列全体から”りんご”を検索
2.”りんご”行から下の”!”までの間で”a”があるかを確認
3.A列全体から”みかん”を検索
4.”みかん”行から下の”!”までの間で”a”があるかを確認

もしくは

1.A列全体から”りんご”を検索
2.”りんご”行から下で、”a”があるかを確認
3.A列全体から”みかん”を検索
4.”みかん”行から下で、”a”があるかを確認

このような感じで作れますでしょうか?
よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-03 15:13
りんごとみかんの開始位置、"!" で表現している終了位置が決まっているか否かで少し変わります。 位置が決まっている場合は領域を名前定義しておけば、間にどれだけデータ増えても問題ありません。 位置が決まっていないのであれば MATCH 関数で位置を検索する必要があります。 あとはその結果位置を範囲にして、COUNTIF 関数でも何でも使えば良いと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-09-03 15:27
ある/ないだけ判断できればいいんですか?
後から、あった行数を知りたいとか言わないですか?

ある/ないだけであれば、前提がシッカリ決まっていれば出来ると思います。

じゃんぬねっとさんがおっしゃるように、MATCH 関数で。
該当する検索文字が無いとエラーになるので、ISERROR 関数で回避もお忘れなく。

Excel であれば、Excel 専門の掲示板の方が回答が早いかもしれませんね。
Teraterm
常連さん
会議室デビュー日: 2007/02/15
投稿数: 25
投稿日時: 2008-09-03 15:43
じゃんぬねっと様、ひろれい様

ご返答ありがとうございます。

>りんごとみかんの開始位置、"!" で表現している終了位置が決まっているか否かで少し変わります。
こちらですが、開始位置は決まっておりません。
ちなみにりんごや、みかんのような一連したものが何百行も続きます。

>ある/ないだけ判断できればいいんですか?

はい、ある/ないだけで大丈夫です。以下のように考えています。
ある⇒if関数でOKを表示させる
ない⇒if関数でNGを表示させる

違うセルにりんご、みかん、xxx、などを記載しておき、その横のセルでOK,NGを判断する検索関数を作りたいです。

分からなかったのが、Matchで検索して、りんごやみかんの行を出すのは分かるのですが、そこから下の!までの間で”a”を検索するというのができません。

ホント初心者で申し訳ございませんでした。
Excelの掲示板を探してそちらで聞いてみます。

お手数お掛けしました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-03 15:51
引用:

Teratermさんの書き込み (2008-09-03 15:43) より:

違うセルにりんご、みかん、xxx、などを記載しておき、その横のセルでOK,NGを判断する検索関数を作りたいです。


ではそのセルの中身を参照するようにして、関数を組めば良いわけですね。 ってこのあたりはできているようですね。

引用:

分からなかったのが、Matchで検索して、りんごやみかんの行を出すのは分かるのですが、そこから下の!までの間で”a”を検索するというのができません。


同じように "!" の位置を検索して位置が取得できたらこれで開始位置と終了位置の範囲が取得できたことになりますので、COUNTIF 関数の範囲を指定する引数に [始点]:[終点] の形式で指定すれば良いですね。

別の場所で質問する場合はこちらの URL を書いておいてください。 同じような回答をされる可能性があります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Teraterm
常連さん
会議室デビュー日: 2007/02/15
投稿数: 25
投稿日時: 2008-09-03 16:10
じゃんぬねっと様

何度も申し訳ございません。
最後にご教授下さい。

>同じように "!" の位置を検索して位置が取得できたらこれで開始位置と終了位置の範囲が取得できたことになりますので

"!"は列Aに多数存在します。なので、列A全体で"!"を検索すると一番上の"!"しかでてきません。さらに”りんご”から"!"までは不特定行のため、決まった行数分を範囲にすることもできません。
その場合、”りんご”の行を検索し、その行から下を見ていって、最初の"!"がある行を
取得。同じく、みかんでも”みかん”の行を検索し、その行から下を見ていって、最初の"!"がある行を取得。というのができればいいなと思っているのですが可能でしょうか?

>関数の範囲を指定する引数に [始点]:[終点] の形式で指定すれば良いですね。

[始点]:[終点]を指定する時に、セルを参照させることは可能なのでしょうか?
例えば、りんご行を検索(2行目)、!行を検索(10行目)とした場合、どこかのセルに
A2:A10と表示されるように関数を組んでおいて、countifの範囲にそのセルを指定する。

なかなか説明が難しく、意味が曖昧で申し訳ありません。

お手数ですが、よろしくお願いいたします。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-09-03 16:48
例えば。

=MATCH("a",A:A,0)
で「a」があるかどうか分かりますよね。
よって、「A:A」の部分を何とかすれば良いと思います。

=INDIRECT("A"&MATCH("みかん",A:A,0))
とすれば、「みかん」という文字のセルをスタートとすることができます。
同じように「!」を考えれば出来そうな気がします。

ただし、この方法の場合、「みかん」「りんご」も同列に複数ある場合、うまくいきません(^_^;)
1

スキルアップ/キャリアアップ(JOB@IT)