プロが教えるわが家の防犯対策術!

関数初心者です。
Excelで任意の文字を含むセルの1つ下のセルを文字カウントする、シンプルでスマートな方法はないでしょうか?

具体的には
     A列
1行目 @: インデックス1
2行目 この行の文字数をカウント
3行目 <空白行>
4行目 @: インデックス2
5行目 この行の文字数をカウント

上記のようなケースで「@:」を含むセルの1つ下の行(2,5行目の文字数をカウントしたいのです。

現状では、以下のような不細工な方法でやっています:

A列の左隣に列を3つ挿入し(オリジナルのA列がD列になります)、C1に「=FIND("@:", D1)」とした上で関数を最終行までコピー→この例では1,3行目に「1」と表示されます

次にB2に「=IF(C1=1,"TRUE","")」と入力し、これを最終行までコピー→この例では2,5行目に「TRUE」と表示されます

最後にB列にオートフィルタをかけ、TRUEの行だけ表示したうえで、A1に「=LEN(A1)」と入力して、これを最終行までコピーしています→これで、2,5行目の文字数がカウントされます

こんなヘタクソな方法ではなく、1つの関数で綺麗に同じ結果を得る方法はないでしょうか?

もっと勉強すれば、自分でも出来るかもしれませんが、今すぐ必要なのでどうかご教示ください。

A 回答 (3件)

B列に文字数を表示する形だと


B2 : =IF(ISERR(FIND("@",A1)),"",IF(FIND("@",A1),LEN(A2),""))
で下にコピー
で、どうでしょう?
ISERR(FIND("@",A1)~は文字が見つからない時にエラーが出てしまうので付けています。
    • good
    • 0

質問文との表記の都合で、B列に結果を求めるとします。



B1に
 =IF(ISERROR(FIND("@:",A1)),"",LEN(A2))
として、下にコピーフィルではいかがでしょうか?

ついでに検索する「@:」もいろいろ変わることを想定するならば、検索対象をどこかのセル(ここでは仮にC1としておきます)に記入するものとして、
B1に
 =IF(OR($C$1="",ISERROR(FIND($C$1,A1))),"",LEN(A2))
として、下にフィルコピーしておいて…
C1に「@:」あるいは、「@@」などと入力することによって、その内容を検索対象とした際の結果がB列に表示されるようになります。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。教えていただいた式でちゃんと期待した値を得ることが出来ました。検索対象のインデックスを切り替える方法も示して下さって非常に勉強になりました。

お礼日時:2009/05/08 07:38

この問題簡単。


A列データを対象にするとして
B1セルに,式として =IF(A1に@を含む,直下セルのA2の文字数をカウント,"")
具体的には文字数は=LEN(A2)と良く使うやつ。
@を含むかどうかは、Find関数でNOT(ISERROR(FIND(・・・))で捉まえる。
詳細は
=IF(NOT(ISERROR(FIND("@",A1))),LEN(A2),"")
を入れ、下方向に式を複写。
FindとLENは超ポピュラー関数。NOT(ISERRORが珍しいかも。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。NOT(ISERRORで下の回答のTRUEとFALSEを逆転したわけですね。そんな技があるとは知りませんでした。

お礼日時:2009/05/08 07:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!