Excel関数を使って複数条件に合う文字列をカウントする方法

このQ&Aのポイント
  • Excel2010を使用してタッチパネルを想定した処理表を作成していますが、関数に関してわからないことがあります。
  • ランダムに配列された項目とその下にある文字列の表から、項目ごとに文字列をカウントして別の表に移動したいです。
  • 項目の数や順番がランダムに変わるため、複数条件に合う文字列をカウントするための関数がわかりません。
回答を見る
  • ベストアンサー

複数条件に合う文字列をカウントする関数

現在、Excel2010を使って、タッチパネルを想定した処理表を作っているのですが、 関数に関してわからないことがあります。 ランダムに配列された項目(画像右、2行目のア~エ)と、その下にある文字列(A+~B)の右表から、 項目ごとに文字列をカウントして左の表に移したいです。 項目(ア~エ)の数やその順番はランダムに増減したり入れ替わったりするので、 関数によって項目名と文字列を一致するものを探し、それをカウントしたいのですが、 どのような関数を使えばこのような複数条件に合う文字列をカウントできるのかわかりません。 もしご存知の方がいれば、ご教授頂けないでしょうか?よろしくお願いします。m(_ _)m

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 回答No.4を書いている間に、追加の御要望が来ておりました。 >表の右の項目の上に数値を置き、その数値の分、カウントされた個数を乗算し、その結果を左の表に出すことは可能でしょうか?  「"カウントされた個数に"乗算」という御説明の内容が今一つ不明瞭です。  カウント数が2以上の場合には、表の右の項目の上の該当する列の数値を全て掛け合わせた値を、カウントされた個数に乗ずるのでしょうか?  それとも、表の右の項目の上の該当する列の数値の合計値を、カウントされた個数に乗ずるのでしょうか?  恐らく質問者様は後者の意味で仰っておられるのではないかと思いますが、それならばA2セルに入力する関数を次の様な関数にされると良いと思います。 =SUMIFS($U$1:$AB$1,$U$2:$AB$2,INDEX($A$1:$T$1,MATCH(CHAR(1),$A$1:A$1,-1)),$U3:$AB3,A$2) 或いは =SUMPRODUCT(($U$2:$AB$2=INDEX($A$1:$T$1,MATCH(CHAR(1),$A$1:A$1,-1)))*($U3:$AB3=A$2)*$U$1:$AB$1)

naramike800
質問者

お礼

親切に何度も回答頂き、感謝します。 質問の内容が不明瞭で失礼しました。質問としては後者の方で間違いないです。 回答頂いた関数を入力したところ、目的の結果を算出することができました。 これで目的のシステムの構築が大きく進みそうです。 まだ提示された関数の一つ一つの意味を理解していないのですが、 試行錯誤して自分なりに別のシステムでも応用できるよう頑張ってみたいと思います。 kagakusukiさんとMarcoRossiItalyさんのどちらの関数でも目的は達成できたので、 できればお二人にベストアンサーを捧げたい気持ちなのですが、 今回は様々なケースに対応した、きめ細やかな回答をして頂いたkagakusukiさんに ベストアンサーを捧げたいと思います。本当にありがとうございました!m(_ _)m

その他の回答 (5)

回答No.5

>表の右の項目の上に数値を置き、その数値の分、カウントされた個数を乗算し、…… A3 =sumIFS($U$1:$AB$1,$U$2:$AB$2,OFFSET($A$1,0,5*INT((COLUMNS($A3:A3)-1)/5)),$U3:$AB3,A$2) No.3 の数式中、COUNTIFS を SUMIFS 関数に書き換え、第 1 ~第 4 引数をそれぞれ第 2 ~第 5 引数とし、新たな第 1 引数として $U$1:$AB$1 を指定するだけです。

naramike800
質問者

お礼

わがままな要望でしたが、素早い回答有難うございます!m(_ _)m 自分にとっては複雑な関数でしたが、MarcoRossiItalyさんの関数を入力したところ、 思い通りの結果を算出することができました!素晴らしくて感動しました! 画像や数式の解説もわかりやすく、とても参考になりました。ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 尚、左側の1行目に入力されている「ア」~「エ」の各項目が、何れも5列ずつ1組になっている場合には、次の様な関数でもOKです。 =COUNTIFS($U$2:$AB$2,INDEX($A$1:$T$1,INT((COLUMN()-COLUMN($A$1))/5)*5+1),$U3:$AB3,A$2) 或いは =SUMPRODUCT(($U$2:$AB$2=INDEX($A$1:$T$1,INT((COLUMN()-COLUMN($A$1))/5)*5+1))*($U3:$AB3=A$2))

naramike800
質問者

お礼

様々なパターンに対応した関数を記述いただき、感謝します。 ベストアンサーの関数で目的は達成できたのですが、 この関数も参考に今後エクセルを使いこなしていきたいです。

回答No.3

A3 =countifs($U$2:$AB$2,offset($A$1,0,5*int((columns($A3:A3)-1)/5)),$U3:$AB3,A$2) A3 セルをコピーし A3:T17 のセル範囲に貼り付け

naramike800
質問者

お礼

具体的な例示、わざわざ表まで作って頂いて大変ありがとうございます。 とてもわかりやすいです! m(_ _)m 早速、自分が作りたいシステムに取り込んでみたところ、 見事、動作することができました。 kagakusukiさんとは違う関数ですが、同じ答えが導き出せるんですね。 下のkagakusukiさんのコメントにも記載していますが、 もし、よろしければで良いのですが、 下の画像のような関数というのは作ることができるのでしょうか? http://uploda.cc/img/img529adf8cde847.jpg 表の右の項目の上に数値を置き、その数値の分、カウントされた個数を乗算し、 その結果を左の表に出す、ということをしたいです。 何度か試行錯誤してみたのですが、どのような計算式を用いれば良いのかわからず、 立ち往生しています。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 因みに、ExcelのバージョンがExcel2007よりも前のバージョンの場合にはCOUNTIFS関数を使う事が出来ませんので、その様な場合にも使う事が出来る関数は次の様な関数となります。 =SUMPRODUCT(($U$2:$AB$2=INDEX($A$1:$T$1,MATCH(CHAR(1),$A$1:A$1,-1)))*($U3:$AB3=A$2))

naramike800
質問者

お礼

ありがとうございます。 Excelのバージョンを記載していませんでしたが、Excel2010を使用していたので、 下の関数で問題なく動作することができました。ご丁寧にありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、添付画像の例の中で赤色の地色の中に白文字で「ア」と入力されているセルがA1セル~E1セルを結合したセルであり、添付画像の右側にある黒色の地色の中に白文字で「ア」~「エ」の文字がランダムに表示されているセルがU2セル~AB2セルであるものとします。  まず、A3セルに次の関数を入力して下さい。 =COUNTIFS($U$2:$AB$2,INDEX($A$1:$T$1,MATCH(CHAR(1),$A$1:A$1,-1)),$U3:$AB3,A$2)  次に、A3セルをコピーして、カウント数を表示させたい全てのセルに貼り付けて下さい。(貼り付ける際には、範囲選択して一括して貼り付けると作業が楽だと思います)  尚、A1~T1の範囲に入力されている「ア」~「エ」のデータが、実際の場合には文字列ではなく、数値データが入力されている場合には、上記の関数の中の MATCH(CHAR(1),$A$1:A$1,-1) の部分を MATCH(9E+307,$A$1:A$1) に置き換えた関数として下さい。

naramike800
質問者

お礼

とてもわかりやすい解説と、具体的な関数の例をありがとうございます。 早速、目的のファイルに関数を組み込んで試行錯誤してみたところ、 おかげさまで目的にあった関数を作ることができました。ありがとうございました。 回答のためにわざわざエクセルファイルも作成して頂き、頭が下がります。 ここまで回答して頂いて、大変申し訳ないのですが、 あともう一点改善したい点が出てきました。もしお時間あれば教えて頂けないでしょうか? 下の画像なのですが、 http://uploda.cc/img/img529adf8cde847.jpg 表の右の項目の上に数値を置き、その数値の分、カウントされた個数を乗算し、 その結果を左の表に出すことは可能でしょうか? 何度か試行錯誤してみたのですが、どのような計算式を用いれば良いのかわからず、 立ち往生しています。 もしお時間がありましたら、アドバイスをお願いします。 (ただ、この問題は自分から新しくトピックを増やしてしまっているので、 回答が難しければ一旦kagakusukiさんをベストアンサーとして質問を閉じ、 また新しく質問したいと思います。)

関連するQ&A

  • 同一列内の複数条件 カウント

    EXCEL2003でA列のA1:A10の中にA・B・C・D・E・F・Gの7文字が入力されています。 この中からCとD以外の文字の個数を数えたいのですがよい方法はないでしょうか? 検索しても複数列のカウントは見つかるのですが、同一列の中での複数条件のカウントは 見つからず・・・ どなたかご教示お願いします。

  • 複数条件カウント関数を調べています。

    複数条件カウント関数を調べています。 1つのシート内で、E列の中でE5と同じ文字を含むものとG列にある○/×で○表記となっているもの、両方の条件を満たしたものをカウントしたいのですが、下記関数では失敗してしまいます。 =SUMPRODUCT(($E$5:$E$83=E5&"*")*($G$5:$G$83="○")) =SUM(IF(ISERR(FIND(E5,E6:E83)),0,IF(ISERR(FIND("○",G6:G83)),0,))) 正しい関数をご存知の方、教えて頂けますか。宜しくお願い致します。

  • Excel2010 関数 複数条件で人数カウント

    Excel2010で、複数条件を指定して人数をカウントする関数を作成したいのですが うまくできません。やりたい事は、 Sheet1に、1行につき1名の名前(B列)と、○印(C列)が入った表があります。 Sheet2に、2行につき1名の同じ名前(B列)と、○印(C列)が入った表があります。 Sheet2のC列に○印が入った人が何人か知りたいのですが、この時の条件として Sheet1で○が入っている人で、なおかつSheet2でも○が入っている人、をカウントしたいのです。 添付の図の場合、答えはAさん、Cさん、Jさんの3人となります。 下のような式を作ってみたのですが、Sheet2が2行になっているためダメでした。 =SUMPRODUCT((Sheet1!C2:C11="○")*(Sheet2!C2:C21="○")) 関数でカウントできますでしょうか? お分かりの方いらっしゃいましたらご教示ください! よろしくお願いいたします。

  • Excel複数条件に対して、文字列をかえす関数

    Excel関数 複数条件に対して、文字列をかえす関数 「本店コード」と「支店コード」に対して、「会社名」と「支店名」(文字列)を表示させたいです。 調べてあれこれ試しましたが、上手くいきませんでした。 お願い致します。

  • 文字列カウントと並び替え

    初めての質問です。PC初心者です。宜しくお願い致します。 エクセルの関数で、 A列の文字列をカウントして小さい順にB・C列に表示したいです。 A列 :B列 :C列 200 :100 :2件 100 :200 :1件 100 :500 :1件 500 : こんな感じです。 色々調べてB列に並べかえましたが、カウントできず。。。 カウントできたら、並べ替えできず。。。 知識不足で申し訳ありませんが、お力添え下さい。

  • Excel2010関数 複数条件で人数カウント-2

    Excel2010で複数条件を指定して人数をカウントする関数を作成したいのですがどうにもうまく出来ず、お手上げ状態になっています。 やりたい事は出席人数のカウントです。 B列に名前が、C列に○印が入った表があります。 B列の名前は2行1列が結合されたセルに入力されています。 C列の○印は、B列の名前セル(2行)に対し、上行が午前中の出席、下行が午後の出席です。 その日の出席人数(午前か午後に○が入っている人、もしくは午前午後に両方に○が入っている人)をカウントしたいのですが、この時の条件として作業列は使わず、1つのセルで答えを出さなくてはいけないのです。 添付の図の場合、答えはA、B、C、F、I、Jの6人となります。 先日似たような質問をさせて頂きましたが 条件が変わってしまったので再度質問させて頂きました。 http://okwave.jp/qa/q7833908.html 関数で、しかも作業列を使わず1つのセルでカウントできますでしょうか? お分かりになる方がいらっしゃいましたら教えて頂けると嬉しいです。 どうぞよろしくお願いいたします。

  • 列に複数の内容をカウントが出来ない

    エクセルで、B列に商品名を入力しています。各項目の内容件数をカウントしたいのですが、列には関数のVLOOKUPで表示してあるのでCUNT・CUNTAなどの関数を使うとVLLOKUPを含む内容の件数が出ます。例:商品1 3件 商品2 3件と個別にカウントする方法は無いでしょうか?

  • 複数列の中の文字列の検索、個数抽出

    どなたかお力をお貸しください。。 エクセル2003を使用しています。    A列 B  C  D 1  あ  う     あ 2  い  お  か  か 3  う        う 4  え     き  く 5  お  い  う  け Dの文字列のなかでA~C列の中に重複している文字が何個あるかを出したいです。 この場合D列は「あ、か、う、く、け」なので、A~C列にある「あ、か、う」が重複しているので、3個と出したいです。 もしくは重複していない「く、け」で2個と出したいです。 MATCH関数を使うと出来そうなのですが、MATCH関数だと配列の概念がなさそうなので、どうしたものかと。 条件として、 ・一つのセルで関数を使用して出す。 ・マクロ、計算用のセルはできたら使用しない。 ・空白セルもあり、文字列の完全一致のみ個数としてカウント。 ・列の数はだんだん増えてくるので、列数は増えても大丈夫なやり方の方がいいです。 COUNTIFで重複個数を出すと、「う」が複数回出てくるので、重複の個数が増えてしまい困っています。 もしかしたら不可能かもしれませんが、どなたかお知恵をお貸しください。 よろしくお願いいたします。

  • 縦に不規則に並ぶ表から特定文字列をカウントしたい。

    縦に不規則に並ぶ表から特定文字列をカウントしたい。 Sheet1の縦に日付ごとに並んだ表から、 Sheet2へ特定文字列のカウント結果を表に起こしたいです。 日付ごとグループごとに項目数が異なるので、 どのようにセルを選択し、カウントすればいいのかわからず、 困っております。。 質問内容を分かりやすく画像に纏めましたので、 お手数ですがどうか見て下さい!! どうかよろしくお願いいたします。><!

  • エクセルである文字列をカウントしたい

    例えば、シート1のA列のセルごとに下記のいずれかの文字列が入っているとします。(文字列の1部ではなく、完全一致の文字列です。) おはよう こんにちは こんばんは そこで、シート2で上記の各文字列が記入されているセルがいくつあるか集計したいのですが、どうしたらよいでしょうか。 シート2は、A列に上記3つの文字列、B列にはそれぞれのカウント数を入れようと思っています。

専門家に質問してみよう