みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

抽選結果数字を各番台に数える方法。

どなたかご存じでしたら回答をお願いします。
数字選択式宝くじロト6、ミニロトの抽選結果をエクセルにつけております。
それを利用して、『ボーナス数字を除いた第1~第6までの抽選結果数字が、0番台、10番台、20番台、30番台、40番台のいずれかに数える方法』が知りたいです。

【抽選結果シート】 ※631回を最新抽選回数とする。

抽選回 第1数字 第2数字 第3数字 第4数字 第5数字 第6数字 ボ数字               
629      6    16     21     30    41     43    36
630      3     7     13     18    19     41    38
631      2     5     7      10    36     40    12

【出現番台まとめ】   
抽選回  0番台 10番台 20番台 30番台 40番台
629      1     1     1    1      2
630      2     3     0    0      1
631      3     1     0    1      1

○注意事項
    1)各番台は下記の数字を対象とします。
       0番台 ・・・  1~9までの数字。
      10番台 ・・・ 10~19までの数字。
      20番台 ・・・ 20~29までの数字。
      30番台 ・・・ 30~39までの数字。
      40番台 ・・・ 40~43までの数字。
    2)使用するエクセルは2007です。

以上、ご回答よろしくお願いします。

投稿日時 - 2012-05-13 00:03:02

QNo.7472546

すぐに回答ほしいです

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

No.1です。
ちゃんと表示できなかったようですので・・・

前回は勝手にSheet1のSheet名を「抽選結果」としての数式でしたので、
その辺も原因の一つだったのかもしれません。
今回は↓の画像のような配置でSheet名は指定せず「抽選結果」Sheetは「Sheet1」にしています。

そして画像のようにA列の抽選回数は一致しているという前提です。
※ 今回はエラー処理(A列が空白の場合)も入れてみました。

Sheet2のB2セルに
=IF($A2="","",SUMPRODUCT((Sheet1!$B2:$G2>=(COLUMN(A1)-1)*10)*(Sheet1!$B2:$G2<COLUMN(A1)*10)))
という数式を入れ、列方向・行方向にオートフィルでコピーすると
画像のような感じになります。

参考になりますかね?m(_ _)m

投稿日時 - 2012-05-13 10:55:37

お礼

わがままを聞いてサンプルを作って
くださり大変ありがとうございます!
同じように真似たところ今度はちゃんと得たい結果が得られました。
今朝は何を間違えていたか思い出せませんが、
気持ちをくみ取っていただきありがとうございました。
またよろしくお願いします。

投稿日時 - 2012-05-13 20:26:10

ANo.6

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(9)

先に、「0番台」→「0番台」、「10番台」→「10番台」…といった具合に見出しを修正してください。

「第1数字」がB1に、「0番台」がB7にそれぞれ入力されている場合。B8セルに次の式を入力。

=countifs($B2:$G2,">="&substitute(B$6,"番台",),$B2:$G2,"<"&substitute(B$6,"番台",)+10)

Excel2003以前の場合
=sumproduct((0+substitute(B$7,"番台",)<=$B2:$G2)*($B2:$G2<10+substitute(B$7,"番台",)))

B8をコピーし、B8:F10の範囲に貼り付け。

投稿日時 - 2012-05-13 13:42:17

お礼

回答を頂きありがとうございます。
countifsを利用した記述ですね。
2003以前のバージョンまでの記述を頂き、
ありがとうございました。

投稿日時 - 2012-05-13 20:47:33

ANo.8

>いまいちピンと来ないので、お手数ですが、サンプルを作って頂けると理解の悪い私でもわかりやすいのですが。。。

サンプルの問題ではなく、数式の内容が理解できていないためと思われますので、簡単に数式の内容を説明します。

=COUNTIFS($B2:$G2,">="&(COLUMN(A1)-1)*10,$B2:$G2,"<"&COLUMN(A1)*10)

B列からG列の2行目のデータに対して、第一条件が「COLUMN(A1)」すなわちA1セルの列番号(=1)から1を引いたもの(=0)に10をかけた数字(=0)以上、第二条件が同様にA1セルの列番号(=1)に10を掛けた数字(=10)未満という数字の個数を計算しています。

すなわち数式をそのまま数字に書き換えると以下の計算をしていることになります。

=COUNTIFS($B2:$G2,">=0",$B2:$G2,"<10")

このセルを右方向にオートフィルすると対象範囲の$B2:$G2は変化せず。条件の「COLUMN(A1)」の部分が「COLUMN(B1)」に変化しますので、第一条件が10以上、第二条件が20未満になるので1つの式ですべての条件範囲のデータの個数が求められることになるわけです。

ここで注意することはCOLUMN関数は単純に横方向に1から順に1づつ増加した値を取得するために使用してるので、どこのセルに入力する場合も「COLUMN(A1)」とする必要があります。

ちなみに、縦方向に連続番号を取得したい場合は「ROW(A1)」のような数式を利用します。
,

投稿日時 - 2012-05-13 12:13:49

お礼

私のエクセル知識不足を指摘して頂きありがとうございます!
”サンプル・・・”と言ったのは、エクセルの数式だけでは自分の頭の中でイメージができなかったためで、
皆様に上記のような説明を求めるのは気が引けますので、サンプルを作って見せて頂ければ理解が早いかな?と思って言いました。大変丁寧な説明で勉強になり、少ないエクセルの知識を増やすことができました。
ありがとうございました。

投稿日時 - 2012-05-13 20:45:03

ANo.7

【注意事項】
サンプルを作って見せろと要求するなら、まず先にあなたの抽選結果だのまとめ表は、どこシートのどこ番地のセルにどういう風に配置されているのか、しっかり説明することから始めたらどうでしょう?
それとも。人に言うのは簡単で、自分はやらなくていいとでもいうことでしょうか。


【添付図】
J2:
=IF(B2="","",SUMPRODUCT(1*(INT($B2:$G2/10)=COLUMN(A2)-1)))

投稿日時 - 2012-05-13 11:19:37

お礼

サンプルを作成して頂きありがとうございます。
この質問以外にも過去に回答を頂いたものについては
一通り、自分でエクセルにて動作確認はしておりますが、
tom04さんに教えてもらった事をやってた時に得たい結果にならなかったですが、
基本的にエクセルの知識不足があるためうまく説明できなかったことと、
MackyNo1さんの追加回答について頭の中で理解ができなったので
自分の言葉での説明をカットして端的に、”サンプルを作って下さい。”と言いました。
今後は誤解の内容に説明してゆきます。
また、質問することがあると思いますが懲りずに回答頂けたらと思います。
ありがとうございました。

投稿日時 - 2012-05-13 20:37:00

ANo.5

皆さんの回答でお分かりになったと思いますが、No3の回答の訂正です。

右方向にオートフィルしても参照範囲が変わらないようにするには、以下のように複合参照(列を絶対参照)にする必要があります。

=COUNTIFS($B2:$G2,">="&(COLUMN(A1)-1)*10,$B2:$G2,"<"&COLUMN(A1)*10)

投稿日時 - 2012-05-13 09:15:59

お礼

追加で回答頂きありがとうございます。
いまいちピンと来ないので、
お手数ですが、サンプルを作って頂けると
理解の悪い私でもわかりやすいのですが。。。

投稿日時 - 2012-05-13 10:42:21

ANo.4

抽選結果のシートがシート1のA1セルからH1セルにかけて項目名が、下方にデータガン入力されているとします。
お求めの表をシート2に表示させるとしてA1せるからF1セルには項目名が有るとします。
A2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(OR(Sheet1!$A2="",COLUMN(A1)>6),"",IF(COLUMN(A1)=1,Sheet1!$A2,COUNTIFS($B2:$G2,">="&(COLUMN(A1)-2)*10,$B2:$G2,"<"&(COLUMN(A1)-1)*10)))

勿論上の式はシート1の中で結果を表示させたい位置で使用することもできます。

投稿日時 - 2012-05-13 07:13:58

お礼

ご回答ありがとうございます。
他者の方とはまた別の回答をいただきありがとうございます。
参考にさせていただきます。

投稿日時 - 2012-05-13 10:40:16

ANo.3

元のデータがB2セル以下にあるなら、以下の式を入力して右方向及び下方向にオートフィルしてください。

=COUNTIFS(B2:G2,">="&(COLUMN(A1)-1)*10,B2:G2,"<"&COLUMN(A1)*10)

投稿日時 - 2012-05-13 00:36:22

お礼

いつもお世話になっております。
これもcounitifsを使用した
範囲指定で、1行にまとめられてすっきりしてますね。

投稿日時 - 2012-05-13 10:37:46

ANo.2

0台:
=COUNTIFS(B2:G2,">=0",B2:G2,"<10")
10台:
=COUNTIFS(B2:G2,">=10",B2:G2,"<20")
以下同文

で計算できます。

投稿日時 - 2012-05-13 00:36:21

お礼

いつお世話になっております。
範囲指定ですよね。
私もこれは思いつきました。
countifsなんですか。
勉強になります。

投稿日時 - 2012-05-13 10:36:12

ANo.1

こんばんは!
一例です。
一例です。

「抽選結果」Sheetのデータは2行目以降、「第1数字」がB列にあり、
「出現番台まとめ」SheetのB2セル以降に表示するとします。

=SUMPRODUCT((抽選結果!$B2:$G2>=(COLUMN(A1)-1)*10)*(抽選結果!$B2:$G2<COLUMN(A1)*10))

という数式を入れ、
列方向・行方向にオートフィルでコピーではどうでしょうか?m(_ _)m

投稿日時 - 2012-05-13 00:32:53

補足

早速のご回答ありがとうございます。
早速やってみましたが、私の理解が足りないせいか、
上手くいきません。
お手数ですが、
サンプルを作って頂けると助かるのですが・・・。

投稿日時 - 2012-05-13 10:34:56

あなたにオススメの質問