• ベストアンサー

エクセル関数で、文字(漢字)列の複合条件を拾いたい

私はエクセル初心者に毛が生えたレベルの者です。 関数は覚えておりませんが、随時調べ、少しアレンジならばできる程度です。 各支社に配布する名簿のテンプレートを作成しております。     B列(氏名欄) 10  =PHONETIC(B11) ・・・自動的にフリガナが表示されるようにPHONETIC関数を埋め込む 11  田中 一郎 12  =PHONETIC(B13) 13  (空白)     ・・・ 48  =PHONETIC(B49) 49  (空白) ┌───────────┐ |=COUNTIF(B34:B54,"*") │・・・合計セル └───────────┘ 上記のように、氏名の書かれた縦列で合計人数を集計するために、 空白はカウントせずに、個別に異なる氏名が書かれた場合に*(ワイルドカード)を当てはめ、 「=COUNTIF(B10:B49,"*")」で合計値(人数)を求めたいのですが、 しかしその名簿には、上段にふりがなが自動的に表示されるように、 「=PHONETIC(B11)」が書かれており、 この合計を求めるcountif関数ですと、そこまで集計してしまいます。 上記例ですと、田中一郎のただ1名のみの「1」という合計値を求めたいのですが、 合計結果は、すべてのPHONETIC関数も拾ってしまうため、「31」という合計値が出ます。 そこで、PHONETIC関数のセルを除いて合計を出す方法を教えて戴けないでしょうか? もちろん、規則的に2行でまとまっていますので、奇数セル合計なども手段だとは思いますが、 今後のために、 "<>PHONETIC*" などを用い、 「○○を含む」+「○○を除く」という条件が1つの関数で済めばと思っています。 氏名はすべて漢字です。 ちなみに、 =COUNTIF(B10:B49,"*")-COUNTIF(B10:B49,"<>PHONETIC*")ですと、「-29」になります。 なお、様式に則っているため、セルを増やして○や数字を記入し非表示にし、それを拾うなどはできません。 最終的にはプリントアウトをするので、並び替えなどは用いません。 宜しくお願い致します。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 =SUMPRODUCT((MOD(ROW(B10:B49),2)=0)*(B10:B49<>""))

fukuyama_13
質問者

お礼

そのままコピー&ペーストをしたら、求めたい値が出てきました。 式の内容は全くわかりませんが、調べながら解析していきたいと思います。 ありがとうございました!

その他の回答 (2)

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

我流の解法を全面に出して質問しているため、ごたごたして、読む気がしない。 もっと式は回答者に任せて、実例を4-5件挙げて、どういうものを件数で数えたいのか、条件など文章で表現すしてみてください。 ーーー PHONETIC関数を使うなら使うでよいが、セルに値(フリ仮名)が出たい上、そのセルの値であるフリガナだけを対象に素の値を使う関数を考えればよいのです。どういう関数で出したかは不問でよい。 ーーー 一般に2条件の該当件数はSUMPRODUCT関数を使えばよい。 過去質問を良く調べること。 毎日このコーナーで数件出る質問だ。

fukuyama_13
質問者

お礼

こんにちは。 読む気がしないのに読んでいただき、その上、ご教受まで賜り誠に嬉しく思います。本当は優しい方なんですね。 大変勉強になりました。ありがとうございました。

fukuyama_13
質問者

補足

【No3さんへの補足では有りませんが書くところがないので最後に。】 どれもこれも私のレベルには難しい話で、3名の方よりご回答を頂き迷いましたが、SUMPRODUCT関数というのが正解に近いのではないかと思いますので、これを教えてくださった2名の方にポイントを差し上げ、回答を締め切りたいと思います。 ありがとうございました。 また宜しくお願い致します。

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.2

間接的に集計する方法なら、可能だと思います。C列(無理なら適当な空き列)を使って、TYPE関数で、B列に入力されているデータのタイプを求めます。C10に数式 =TYPE(B10) と入力して、C49までコピーしてください。B列に数式なり文字列なりが入力されている場合は"l"(Lの小文字)、空白なら"b"が返されますので、求める数は  =(COUNTIF(C10:C49,"l")-COUNTIF(C10:C49,"b"))/2 とすれば求まります。この式の意味は説明しなくてもわかりますよね。

fukuyama_13
質問者

お礼

なるほど! 私がcoutifで求めていたので、あわせて下さったのですね! 調べつくしてもcountifしか思いつかなかったので、type関数は初めて見ました。 正直、式の意味はよくわかりませんが、つまりは全体の15項目(上下で30行)の中から、phonetic関数の記入箇所も含めて、記入されている箇所の合計から、空白数を引いて2で割るということでしょうか???(理解が乏しくすみません^^;) とりあえずは、NO1の方のご意見で解決しましたので、どうもありがとうございましたm(__)m

関連するQ&A