エクセルで特定文字数を数える数式について

このQ&Aのポイント
  • エクセルのバージョン2007で特定の条件を満たすセル内にある特定文字を数える配列数式を組んでいますが、正確な値が得られず困っています。
  • C3からC100までの範囲で条件で絞り込んだセル内にある特定の文字「@」を数えるために以下の配列数式を使用しています。
  • {=SUM(LEN(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""))-LEN(SUBSTITUTE(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""),"@","")))}
回答を見る
  • ベストアンサー

複数条件を満たす複数のセルから特定文字数を数える

エクセルについて質問です。 エクセルのバージョンは2007を使用しています。 標記の結果を導く数式を組みたいのですが、例えば {=SUM(LEN(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""))-LEN(SUBSTITUTE(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""),"@",""))} という配列数式を組んで、C3からC100までの範囲のうち 条件で絞り込んだセルの中にある@の文字を数え、その個数を該当セルに返したいのですが マイナスの値が返ってくるなどどうも正確な値が返ってこず、困っております。 なお、@は同一セル内に複数存在することもあり その場合@A @Bのように半角スペースで区切ってあります。 もちろんC3からC100までのセルの中には空白もあります。 何か根本的なところで認識違いがあるのでしょうか。 それとも単純なミスがあるのでしょうか。 どうかお知恵をお借りできれば幸いです。

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

  • ベストアンサー
回答No.1

お書きになった式は、右端の括弧の数が違うなどの投稿時のミスはありますが、基本的に正しいように思えます。ほとんど同じ内容ですが、修正済みの式は次のとおりなので、コピーして再度試してみてください。 {=SUM(LEN(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""))-LEN(SUBSTITUTE(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""),"@","")))} あるいは、「,""」や「""」を削除して、 {=SUM(LEN(IF((A3:A100=E1)*(B3:B100=F1),C3:C100))-LEN(SUBSTITUTE(IF((A3:A100=E1)*(B3:B100=F1),C3:C100),"@",)))} 異常が発生する原因は判然としませんが、単純ミスのような気がします。ご質問の式の形ではなかなかマイナスにはなりづらいですが、例えば「""」が「" "」のようにスペースが入っていると、正しく計算しません。 =len(0) の計算結果は「1」になるということも、異常値と関係していそうですね。数式バーに数式が表示されている画像でも載せていただけば、皆さん何か分かるかもしれません。

aquagraphics
質問者

お礼

MarcoRossiItalyさま 早速のご回答、ありがとうございます。 また記載ミスもご指摘いただき、ありがとうございます。恥ずかしい限りで、恐縮です。 さて質問の件ですが、実は先程再度チャレンジしてみたところsumをsumproductに代えてみたり、 またオートフィルを作ってみたりといじっているうちに何故か正確な値を返すようになっており 以降変数部分を何個か代入して試したところすべて正確な値を返すようになりました。 ですので、原因ははっきりとはしませんがMarcoRossiItalyさまがご回答くださったように 特に式自体に根本的な問題はないということですので、ここでこの質問を終わらせていただきたいと思います。 MarcoRossiItalyさまには重ねて御礼申し上げます。 ありがとうございました。

関連するQ&A

  • 複数のセル内にある単語数をカウントする方法("-"を省く)

    エクセルに関してなのですが、現在、セル内の単語数をカウントする方法として =SUM(IF(LEN(TRIM(B6:B1005))=0,0,LEN(TRIM(B6:B1005))-LEN(SUBSTITUTE(B6:B1005," ",""))+1)) と入力しているのですが、英文の頭によくある "-" をカウントに含まないようにするには、どうすれば良いのでしょうか? ご存じの方、お手数ですが、ご回答宜しくお願いします。

  • 計算されたセル内の『+』の数を数える方法

    エクセル2003使用です。 現金売上の件数を調べる為に、セルB1に合計金額を入力します。 B1=120+100+300+190+250 とする場合にセルA1に5と表示したいので +の数を数え、その数に+1をすれば件数が数えられるのではと思い =LEN(B1)-LEN(SUBSTITUTE(B1,"+",""))+1 と、入力しましたが、返ってくる数は1です。 B1 120+100+300+190+250 ならば上記の関数でセルA1=5となるのですが セルの中の計算済みの『+』の数を数える方法がわかりません。 よろしく御願いします。

  • 複数の条件に合う行の特定のセルを返す

    ほぼ同じ質問をいくつか見かけたのですが、その式を自分の内容に置き換えても全く希望通りの結果が出ず、質問させてください。 2 1 Aさん 4 1 Bさん 5 1 Cさん 2 2 Dさん 5 2 Eさん セルのA1には「2」、B1には「1」、C1には「Aさん」と入ったシートがあり、例えばセルのD1に A列、B列ともに「2」が入力されている4行目のC列「Dさん」という値が反映して欲しいのですが、その関数が分からなく困っています。 他にもA列が「5」、B列が「1」の結果が(Cさん)が欲しい時もあり、条件にはA列の値とB列の値を使う方法で考えています。 お知恵を貸してください。

  • エクセルの条件付き書式のセルに数式がある場合

    エクセルの条件付き書式で、ある値以上の場合は、セルの色を変えたいと 考えていますが、セルに数式を入れているためか、値が入っていないのに セルに色がつきます。 具体的には下記に記します。 A1に金額、B1に個数でC1に合計金額を表示させて 合計金額の値によってC1のセルの色を、変えたいと考えています。 C1にはA1とB1に値が入っていない場合は、セルを空白にしたいため =IF(B1="","",A1*B1)という式を入れています。 そこで質問ですが (1)なぜセルが空白で値も入っていないのにセルに色がつくのでしょうか? (2)値が入っていない場合はセルに色がつかない方法はありませんでしょうか? よろしくお願いします。

  • エクセルで左隣シートの特定のセルの値を表示させたい

    エクセルで左隣シートの特定のセルの値を表示させたいのですが、 どのようにすればよいでしょうか? 似たような質問の回答をいくつか試したのですが、 よく理解できていないため、うまく応用できずエラーになってしまいます。 ="No."&SUBSTITUTE(MID(CELL("filename",$A$1),FIND("(",CELL("filename",$A$1))+1,5),")","") とか =INDIRECT(SUBSTITUTE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"日","")-1&"日!A"&ROW(F24)) とか =SUM(INDIRECT("'"&(SUBSTITUTE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"日","")-1)&"日'!c5"),F24) とか といった式が参考になりそうですが、結局どう書き変えればいいのかわかりません。。 具体的には、シート名が「04」「05」…「12」「01」「02」「03」と1年分の12シートあります。 半角2桁のみのシート名です。 05以降のシートには、それぞれF1セルに、 「左隣シートのF24のセルの値を表示させたい」のです。 (F24のセル自体は「=F11+F23」という式が入力されています。) 例の式の「日」とか「row()」とかは必要ないと思いますが、 消しただけではムリそうなのでそのままコピーしています。 おわかりになる方、どうぞよろしくお願いします。

  • エクセルでセルの値を数式の範囲として使うには?

    タイトル通りなのですが、エクセルでセルの値を数式中で範囲として使うにはどうすればよいのでしょうか? 例えばA1セルに「1」という値が入っており、B2セルに「10」という値が入っているとします。この時、数式中で、「A1」と「B2」を用いて、「E1からE10まで」を指定することは可能でしょうか。可能でしたらどのような数式を組めば良いのでしょうか? よろしくお願いします。

  • エクセルのROUND処理について教えて下さい。IF関数で条件指定

    詳しい方、教えて下さい!! エクセルで見積書を作成していて、素人ながら一応数式を入力して金額 が算出できるようにしています。その中で、ROUND処理をIF関数で条件 を指定した中で異なる桁数の数字に行いたいのですが、どうすればよい か分からず試行錯誤しています。 つまり、    A  B  C   D     E    F    G 1  1.0 式 空白 106,300 80% 85,000  85,000 2 89.0 m 1,900 169,100 80%  1,500 133,500 というデータで、 Cのセルには=IF(OR(A1=1,A1="",F1=""),"",ROUND(F1/E1,-2)) Dのセルには=IF(OR(A1="",E1=""),"",IF(A1=1,ROUND(F1/E1,-2),A1*C1)) Gのセルには=A1*F1 の数式の結果がそれぞれ入っています。 見積として客先に提出するため、Aのセルが1の場合はCのセルを空白に してDのセルにのみ数式の結果が出るようにしたいのです。 が、F1のセル(5桁)とF2のセル(4桁)のように数値の桁数が違う場合 に、四捨五入を行う桁数をそれぞれにF1=-2、F2=-1とする方法が分から ず困っています。桁数が違う場合には手入力で四捨五入の桁数を変えれ ばよいのでしょうが、それだと手間がかかる上に桁数の変更を忘れてし まうことがあり、間違いのもとなので、間違いにくい方法で数式を組み たいのです。 詳しい方、解決方法があれば回答お願い致します。

  • 条件を満たすN番目のセル

    条件を満たすN番目のセルの値を求める式を教えてください。 A1 B1 C1 D1 E1 F1 G1 あ い あ あ い い い ↓ い(B1) い(E1) い(F1) い(G1) のようにしたいと思っています。い(E1)は、"い"の中で2番目なので、それを求める式があれば良いと思います。

  • 条件付きセル指定/条件式をどのように入れたらいいか

    「数式を使用して、書式設定するセルを決定」で 数式をどう入れたら良いか迷っております。 やりたい事: A1,B1,C1,D1,E1セルがあり、はじめは空白です。 A1~E1まですべてのセルが入力されると、 A1~E1のセルの背景を例えば黄色にしたいのです。 (1行ずつの判定) それが、何行かあり、下に続きます。 Excelバージョンは2007を使用しております。 よろしくお願いします。

  • 一つのセルでIF関数を二つ使いたい

    二つのセルの値を割って、%を表示させるために、三つ目のセルには 「=1-(B1/A1)」を入れていたのですが、そこに、二つのセルが空白の時にはエラー表示にならないようにIF関数を使い、三つ目のセルは 「=IF(ISBLANK(A1),"",(1-(B1/A1)))」 という数式にしました。 その数式にさらに、もし二つのセルの値が「0」の時には、結果を「0%」として表示させたくて、三つ目の数式の中にもうひとつのIF関数を同時に使いたいのですが、 一つのセル内に、IF関数を使って結果をうまく表示させるには、どのような数式にすれば良いでしょうか??

専門家に質問してみよう