• ベストアンサー

Excelで任意の文字を含むセルの1つ下のセルを文字カウント

関数初心者です。 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つの関数で綺麗に同じ結果を得る方法はないでしょうか? もっと勉強すれば、自分でも出来るかもしれませんが、今すぐ必要なのでどうかご教示ください。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

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

Kazu_creator
質問者

お礼

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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

Kazu_creator
質問者

お礼

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

  • asapinya
  • ベストアンサー率36% (40/109)
回答No.1

B列に文字数を表示する形だと B2 : =IF(ISERR(FIND("@",A1)),"",IF(FIND("@",A1),LEN(A2),"")) で下にコピー で、どうでしょう? ISERR(FIND("@",A1)~は文字が見つからない時にエラーが出てしまうので付けています。