• ベストアンサー

エクセルで質問です。

エクセルで質問です。 添付のようなエクセルで、行が2000ほど続く表に関して、 データのカウントをしたいと思っています。 各セルは0か1の値です。 添付を例にすると、以下のようなことを調べたいのですが、 どのような方法があるでしょうか。 BDEに1が入っている行の数→   2 CEに1が入っている行の数→ 2 ACEに1が入っている行の数→ 2 ACDEに1が入っている行の数→ 1 ABCDEに1が入っている行の数→ 1

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

  • ベストアンサー
noname#204879
noname#204879
回答No.4

添付図参照 M2: =SUMPRODUCT((A$2:A$2001=H2)*(B$2:B$2001=I2)*(C$2:C$2001=J2)*(D$2:D$2001=K2)*(E$2:E$2001=L2))

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.8

どのやり方でもいいですが、組み合わせパターンは32しかないのですべてのパターンで求めておくとよいです。カウント漏れがないように。

全文を見る
すると、全ての回答が全文表示されます。
  • m_and_dmp
  • ベストアンサー率54% (976/1799)
回答No.7

layy様の回答がシンプルで拡張性・柔軟性があります。ただ、質問者様にご理解をいただいていないかも知れないと思い、マイナーチェンジしてみました。 タイトル行の「E」の右「F」列に「ABCDE」というタイトルを追加します。(名称は自由なんですが) タイトル行が1行目、データ行は二行目から、Aは1列目にあるものとします。 A_B__C_D__E____ABCDE 0__1__0__1__1___=A2*10000+B2*1000*C2*100+D2*10+E2 ....... 計算結果=01011 1__0__1__0__1___=A3*10000+B3*1000*C3*100+D3*10+E3 ....... 計算結果=10101 0__0__1__0__1___=A4*10000+B4*1000*C4*100+D4*10+E4 ....... 計算結果=01011 オートフィルでF列の2000行まで数式を入れます。 F列「ABCDE」の書式(表示形式)をユーザー定義で、00000 にします。 (しなくても計算結果は同じですが、感覚的にその方が分かりやすいと思いまして、) データのカウントを出力するセルに記述する式はつぎの通りです。 __BDEの数を表示するセル =CountIF($F2:$F2000,01011) ____CEの数を表示するセル =CountIF($F2:$F2000,00101) __ACEの数を表示するセル =CountIF($F2:$F2000,10101) _ACDEの数を表示するセル =CountIF($F2:$F2000,10111) ABCDEの数を表示するセル =CountIF($F2:$F2000,11111) ※ =CountIF($F2:$F2000,01011)... 01011と入れても1011になる。00101は、101自動的に変ってしまう。 layy様の回答のアイディアを頂戴していますので気に入ってもベストアンサーになさらないで下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

参考。 2進数の考えです。 Aに1があれば16、Bに1があれば8、後同様に4、2、1と列に重みを付与します。 すると BDEのパターンは8と2と1で11、CEは4と1の5、どのパターンか1つの値で区別できます。 これで 01011を11 00101を5 5列を1つの値で表現できたら後は関数でカウントできます。 こういう掛け算足し算でもなんとかなる、ということで。 もう1列増えたら32。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

少し変わった方法です。 お示しの表が3行目から下方に有るとします。 F1セルからJ1セルまでにはBDE,CE,ACE,ACDE,ABCDEの文字が入力されているとします。 F2セルには次の式を入力してJ2セルまでオートフィルドラッグします。 =SUM(F3:F100) ここに表示されるのが該当する行の数になります。 F3セルには次の式を入力してJ3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(F$1="",$A3=""),"",IF((IF(ISERROR(INDIRECT(MID(F$1,1,1)&ROW(A3))),0,INDIRECT(MID(F$1,1,1)&ROW(A3)))+IF(ISERROR(INDIRECT(MID(F$1,2,1)&ROW(A3))),0,INDIRECT(MID(F$1,2,1)&ROW(A3)))+IF(ISERROR(INDIRECT(MID(F$1,3,1)&ROW(A3))),0,INDIRECT(MID(F$1,3,1)&ROW(A3)))+IF(ISERROR(INDIRECT(MID(F$1,4,1)&ROW(A3))),0,INDIRECT(MID(F$1,4,1)&ROW(A3)))+IF(ISERROR(INDIRECT(MID(F$1,5,1)&ROW(A3))),0,INDIRECT(MID(F$1,5,1)&ROW(A3))))=LEN(F$1),1,0))

全文を見る
すると、全ての回答が全文表示されます。
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.3

以下の関数でできると思います。    =SUMPRODUCT(B1:B99*D1:D99*E1:E99) =SUMPRODUCT(C1:C99*E1:E99) =SUMPRODUCT(A1:A99*C1:C99*E1:E99) =SUMPRODUCT(A1:A99*C1:C99*D1:D99*E1:E99) =SUMPRODUCT(A1:A99*B1:B99*C1:C99*D1:D99*E1:E99) 注)最大行は99としています。

全文を見る
すると、全ての回答が全文表示されます。
noname#180098
noname#180098
回答No.2

複数条件でカウントするのでしたら、COUNTIFS関数でしょう。 ただしこれはExcel2007から追加された関数ですから、Excel2003以前を使っているのでしたらSUMPRODUCT関数で代用することになります。このやりかたは有名ですのでご自身で調べて理解した上で使うようにしましょう。幸い各セルに入力されているのは1か0と言うことですので簡単ですよ。 =SUMPRODUCT(B1:B2000,C1:C2000,D1:D2000) とか。

全文を見る
すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

別の列に=B2+D2+E2等として、3になる行をピボットテーブルで集計する。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの関数についての質問です

    エクセルの関数についての質問です 独学でエクセルを勉強しておりますが以下のような表の中から該当する値を返すことは可能でしょうか。 方法はどのようなものでもアドバイスをいただければトライしてみようと思います。 以下のような元データの中から、行の条件と列の条件を満たすセルに表示されている値(%)を 表示させる関数。そもそも関数での解決は不可能かもしれませんが、もし方法があれば ご教示お願いします。       0000~1000  1001~2000  2001~3000 000~100    5%      5%      4% 101~200    4%      4%      3% 201~300    3%      2%      1% 行と列の値を入力するとその交差した値が表示させたい。 例)行の検索したい数値を110、列の検索したい数値を1200と指定した場合、表示させたい数値は"4%"。 ぜひぜひよろしくお願いいたします。

  • Excelの関数を簡素化する方法(質問1・2)

    Excelの関数で質問があります。できるだけ一つのセルに計算をまとめたいのですが、 ■質問1:データの最も優勢な値をカウントする計算 例えば、下のようなデータがあったとします。(a~cはデータ項目。1~5はデータ番号。)   a  b   c 1 50 100  84 2 37 11   56 3 64 39   61 4 87 47   70 5 73 71   44 同じデータ番号の系列で、a~cの中で最も高い数値をカウント「1」とします。それ以外は「0」とします。 例えば、aの1・bの1・cの1、の中の最高値という具合です。 そして、最終的に「同じデータ項目の最高値のカウント数/データ番号のトータルカウント数」の値を計算します。 例えばaの場合、「同じデータ項目の最高値のカウント数」は、データ番号の3、4、5が最高値なので「3」となり、「データ番号のトータルカウント数」はデータ番号が5個あるので「5」となり、「3/5」となります。 このような計算を一つのセルにする関数はあるでしょうか? 今は、最高値のカウント数を計算するセル、 「=IF(MAX(a1:c1)=a1,1,0)」 「同じデータ項目の最高値のカウント数/データ番号のトータルカウント数」を計算するセル、 「=SUM(a1:a5)/COUNT(a1:a5)」 に分かれています。(ここでいう「a1」「c1」「a5」とは例にあるデータ項目とデータ番号のことです。) ■質問2:あるデータ区間に当てはまるデータをカウントする計算 例えば、例のa1を30~70に当てはまった場合、「1」とし、それ以外を「0」とする計算なんですが、今は 「=IF(30<=a1,IF(a1<=70,1,0),0)」 という関数を使っていますが、これ以上簡単にできませんか? 回答よろしくお願いします。

  • エクセル表のカウントの仕方について

    エクセルの表でいいカウントの仕方を教えてください。 まず思い浮かべて頂きたい簡単な表の例を示しておきます。行は20行程度というのを思い浮かべてください。 A列には1~10の数字、B列にはあ~んの五十音の一文字のみが、それぞれ重複ありで記入されているような単純な表です。 そこで、A列が「5」かつB列が「あ」という両条件を満たした行の数を、どこかのセルにカウントして表示したいのですが、私の能力では経験不足でできないで困っています。 どうすればいいのか教えていただきたいのです。 よろしくお願いします。

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 不用な空白行を削除したいのですが、どのようにコードを書いたらいいでしょうか? 添付の画像のような表を作っています。 添付のではAAからGGまでデータが入っていますが、いつもデータ数は違います。ただし20行目 より多くなることはありません。データ範囲の5行目から20行目まででおさまります。 このような条件で、データのない空白行を自動で削除するようにしたいと考えています。 よろしくお願いします

  • エクセルで表の条件によってセルを着色する方法

    こんにちは。 エクセルについて質問です。 添付してあります画像のような表があると仮定します。 A~Cの行に対応する数字が3つずつ入っている表です。 私がやりたいのは、この各項目の行に対応する3つの数字が、 どれか一つでもある値以上(以下)となるセルがある場合、 A、B、Cのセルの背景の色を変えたいのです。 たとえば、例の表を用いると、 A、B、Cの各項目について、対応する数値のセルに 30以上の値が入っているセルがひとつでもある項目では項目のセルに色がつくといった形です。 つまり、例の表では、AとBがかかれているセルの背景が着色されます。 条件付き書式では、数値そのもののセルにしか着色できないと思うのですが、 やりかたが分かる方がいらっしゃいましたら、ご教授ください。 よろしくお願いします。

  • Excelの関数についての質問です。

    Excelの関数についての質問です。 表1のセルA2の値に対し、セルB2の値の結果をセルC2に返す関数式を教えてください。 なお、表1は表2を反映した値となります(画像添付あり) 初心者です。宜しくお願い致します。

  • エクセル表計算について質問です。

    エクセル表計算について質問です。 添付のエクセル表があります。 2行目に注文数を入力すると各々の単価を掛けて、4行目にABCD各々の合計を算出します。 総合計を表示するときに、 BとCに注文がなければ(つまりAまたはDに注文がある場合) 【あ方式】としているB7セルへオートサムでB4:D4の値を表示し(ABCDの合計セルには注文数がなければ何も表示しないようにif関数がいれてあります。画像では0が表示されてしまっていますが、実際はCに注文がない場合には0ではなく、空白を表示するようにしています) BとCのいずれかに注文があれば 【い方式】としているD7セルへオートサムでB4:D4の値を表示するようにするにはどうしたらいいでしょうか。 ある場合はB7セルへ、ある場合はD7へ総合計の値を表示するにはB7、D7へどういう関数を入れればいいですか、という質問です。

  • エクセルの関数について

    Windows Xp エクセル2003を使用しています。 業務で使用している集計表ファイルがあり、別ファイルにデータを反映させたいのです。 集計表のセルA1を検索値としセルB1とセルB2の値を返す関数はないでしょうか? 集計表のつくりは約1000行あり、セルA3を検索値としてセルB3の値を返す行もあります。 セルA5を検索値とし、B5、B6、B7、C5,C6の値を返す行など様々です。 こういったデータがランダムで表になっています。一つの検索値に対して、検索値の水平方向はvlookup関数で表示出来たのですが、 一つの検索値で2つの値を返す関数が分からず、困っています。 1行下や2行下を検索する関数も参考にしたのですが、集計表のつくりがランダムの為、検索してほしくないものまで表示されてしまうなど、ウマクできませんでした。 宜しくお願いします。

  • エクセルのショートカットORマクロ

    お世話になります。 XP/エクセル2003使用です。 早速ですが、質問させていただきます。 エクセルのショートカットで、 同じ値の最後のセルまでセル範囲を選択するショートカットを探しています。 -------- 同じ値の1個目のデータが複数行に渡ってあります。 そして、1個目のデータに続いて、1個目とは異なる値の2個目のデータが複数行に渡ってあります。 3個目以下同じ繰り返しです。 例えば、A列の 1~800行目  あああ 801~1100行目  いいい 1101行目~1205行目 ううう 1206行目~1310行目 えええ 1310行目~1499行目 おおお  同じ値が入力された連続する行の数に規則性はありません。  また、異なる値の個数も作業の都度変わります。(”あああ”などの値の個数のことです) エクセルのショートカットで、 入力された最後のセルを探すのは、 「Ctrl」+「Shift」+「↓キー」で可能ですが、 同じように、同じ値が入力された最後のセルまで 何かのショートカットでセル範囲の選択をできますでしょうか? または、マクロで記述するとすると どのようなコードになりますでしょうか? 作業としましては、 A1セルを選択した状態でA800セルまでセル範囲を選択し、ある作業をします。 次に、A801セルを選択した状態でA1100セルまでセル範囲を選択し、上記と同じ作業をします。 これの繰り返しです。 行数が多いので、セル範囲を選択するときに スクロールで上手く上下させることができず面倒になっています。 よろしくお願いします。

  • 【VBA】データが途切れた回数をカウントする方法

    添付画像のような1行ごとにデータが入力されている表があります。 このデータには、データが入力されているセルと空白セル(黄色のセル)があります。 1行ごとに、最初にデータが入力されたセルから最後にデータが入力されたセルまでの間に、空白が発生した回数が何回あるのかをカウントしたいと思っております。 空白セルの数をカウントするのではなく、データが途切れた回数をカウントしたいのです。 VBAを使って、上記のような処理は可能でしょうか? 私は現在VBAを勉強中で知識が浅いため分かりませんでした。 もし可能であれば、その方法を教えていただけると大変助かります。 お手数お掛けいたしますが、よろしくお願い致します。

専門家に質問してみよう