Excelでバス旅行申し込みの番号管理

このQ&Aのポイント
  • Excelを使用してバス旅行の申し込み番号の管理を行う方法について教えてください。
  • 申し込み者が120人をオーバーした場合に抽選を行い、外れた場合は番号を繰り上げる方法をExcelで自動化するにはどうすれば良いですか?
  • マクロを使用する以外にも、Excelでバス旅行の申し込み番号の管理と抽選を自動化する方法はありますか?
回答を見る
  • ベストアンサー

Excelで番号管理

Excel2016を使用しています。 自治会で120名、バス3台でバス旅行に行くことになり、その申し込みを受け付け、120人をオーバーする場合は抽選とすることになりました。 申し込みは最大2名とし、抽選で外れる場合は代表者と同行者が共に外れることにしました。 そこで添付のような表を作り、くじに外れた場合は、 1.その行(例:ddd、eee)を削除し、 2.番号(No)は繰り上がる 3.できれば外れたものは別シートにコピーできればいいですね これをExcelで自動で行うにはどうすればいいのでしょうか? マクロを組んで行うしか方法はないと思われますが、残念ながら当方マクロについては詳しくありません。

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

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

>マクロを組んで行うしか方法はないと思われますが  そんな事は御座いません。  ワークシート関数と作業列を用いて抽選結果を出す事は十分に可能な事です。 >残念ながら当方マクロについては詳しくありません。 という事でしたら以下の様な方法は如何でしょうか。  例えば、適当な使用していない列を作業列として4列(ここでは仮にF列~I列とします)使用し、適当な使用していない列(ここでは仮にK列~N列とします)に抽選結果を表示させるものとします。  まず、F3セルに次の関数を入力して下さい。 =IF($B3="","",($B3<>"")+($C3<>""))  次に、G3セルに次の関数を入力して下さい。 =IF($B3="","",RAND())  次に、H3セルに次の関数を入力して下さい。 =IF(ISNUMBER($G3),SUMIF($G:$G,">="&$G3,$F:$F),"")  次に、I3セルに次の関数を入力して下さい。 =IF(AND(ISNUMBER($H3),$H3<=120),ROW(),"")  次に、F3~I3のセル範囲をコピーして、F列~I列の4行目以下に貼り付けて下さい。  次に、A2~D2のセル範囲をコピーして、K2~N2のセル範囲に貼り付けて下さい。  次に、K3セルに次の関数を入力して下さい。 =IF(ROWS($K$3:$N3)>COUNT($I:$I),"",INDEX($A:$D,MATCH(SMALL($I:$I,ROWS($K$3:$N3)),$I:$I,0),COLUMNS($K:K))&"")  次に、K3セルをコピーして、L3~N3のセル範囲に貼り付けて下さい。  次に、K3~N3のセル範囲をコピーして、K列~N列の4行目以下に貼り付けて下さい。  次に、Excelウィンドウの上の方に並んでいるタブの中から[数式]タブというタブを選択してクリックして下さい。  次に、現れた「計算方法」グールプの中に[計算方法の設定]という電卓の形をしたボタンがありますので、そのボタンをクリックして下さい。  次に、現れた選択肢の中にある[手動]という選択肢をクリックして下さい。  以上で準備は完了で、後は「計算方法」グールプの中にある[再計算実行]ボタンをクリックするか、キーボードの[F9]キーを押すたびに抽選が行われ、[再計算実行]ボタンや[F9]キーを押すごとに異なる抽選結果が得られますので、最初にボタン等を押した際に現れた際に、K列~N列の表をコピーして、別の適当なセル範囲に"値のみを"貼り付けて、その貼り付けた表を抽選結果として下さい。  何故、値のみをコピーした表を抽選結果にするのかといいますと、[再計算実行]ボタンや[F9]キーを何度も押すとそのたびに異なる抽選結果が得られるため、何度も抽選しなおすのと同じ事になり、その様な事を許していたのでは抽選を行っている人間が参加して欲しい応募者が出るまで抽選をやり直したり、抽選を行っている人間が参加して欲しくない応募者が抽選から外れるまで抽選をやり直す事も出来てしまうからです。  尚、下記の添付画像は、120人分以上のデータを入力した表を撮影したのでは、表が大き過ぎて個々のデータの文字が小さく写ってしまう事により、文字が潰れて判別出来なくなってしまいますので、仮の話として受付人数を120人以内ではなく、12人以内とした場合の例を写したものです。(I3セルの関数中にある「$H3<=120」という部分を「$H3<=12」に変更した場合の画像です)  11人分しか写っていませんが、これはG列の乱数の値が大きい順に参加者を選んで行った結果、偶々、12人目以内までの人数が奇数人となっていて、その次の12人目の該当者が同伴者を連れた2人組であったため、12人目を加えるためには13人目を同時に加えなくてはならず、それでは受付人数を超えてしまうため、12人目は参加者から除外しなければならなかったためです。  例えばくじ引きで参加者を決めて行く際に、12人目以内までの人数が奇数人となっていて、その次に引いたくじに書かれていた申込者が同伴者を連れた2人組であった場合と同じ事です。

morinosatou
質問者

お礼

ありがとうございます。 参考にします。

その他の回答 (2)

回答No.3

ポイントは次の2点 ・物理的な削除をしない ・フィルター機能を使う 物理的に削除しないで、削除フラグで管理すればよいと思います。 右端へ削除フラグの列を作り、削除したい行に1を立てるだけ。 タイトルと先頭行の間に初期値行を作り非表示行(3行目に作成)にしておく。 (Noは0ゼロ、氏名は空白、削除フラグは2にする) 4行目(実際のデータの初めの行)の代表者氏名のNoに =IF(E4<>1,MAX(A3,C3)+1,MAX(A3,C3)) を設定する 同伴者Noに =IF(AND(D4<>"",$E4<>1),A4+1,"") をそれぞれ入れます。 後は、必要な行数分複写するだけです。 Excelのフィルター機能により、削除フラグ=1のものを表示/非表示にすれば、 わざわざ別のシートにしなくても参加者や削除者を表示できます。 削除フラグ列も入力するときだけ表示し、印刷時は非表示にすればOKです。 削除した人が復活した場合にNoのリナンバリングも削除フラグを消すことにより、 容易に自動復旧出来ます。

morinosatou
質問者

お礼

ありがとうございます。 参考にします。

  • _backyarD
  • ベストアンサー率34% (199/580)
回答No.1

同行者と代表者を同じ行に、そこまでは良いと思います。 このあとの抽選ですが、 1. 人数を数えるために列を追加し、それぞれ1または2を記入します。 2. 乱数を発生させる式を各行の頭か後ろに追加し、全部の行についてランダムな数字を設定します。 3. そのあと、全体を並べ替え。先頭から人数列の合計が120人になるところまでが当選。それ以下は落選 みたいな感じで、乱数発生と並べ替え、上位から所定の人数までが当選という形で抽選されてはどうでしょう?(私がマンション管理組合の役員をやった時に駐輪場抽選で使った方法です)

morinosatou
質問者

お礼

ありがとうございます。 参考にします。

関連するQ&A

  • EXCEL97のマクロ処理について

    EXCEL97のマクロ処理について教えてください。 下記のシート例のようなシート(アクセスのクロス集計のようなもの)を最初に複数範囲指定(アクティブ)します。その後にその範囲指定したなかで項目が1~5まで全て同じモノだけを統一して、種類で存在するものも統一させます。一つ目のものに種類1がなくても同一のものに種類1があれば統一後のデータは種類1の列に"1"がつくようにします。ちなみに種類はその時によりどれだけ存在するかわからないのが前提です。削除するデータは回路Noが大きいものを消すようにします。下がそのデータの例です。 =============== エクセルシート例 =================================== 回路No  項目1 項目2 項目3 項目4 項目5 種類1 種類2 種類3 ... 1      AAA  BBB  CCC   DDD  EEE   1        1 1      FFF  DDD  UUU   DDD  OOO       1    1 1      UUU  PPP  TTT   DDD  EEE   1   1 2      AAA  BBB  CCC   DDD  EEE       1    1 2      XXX  QQQ  SSS   NNN  MMM   1   1                ↓ マクロ処理後 回路No  項目1 項目2 項目3 項目4 項目5 種類1 種類2 種類3 ... 1      AAA  BBB  CCC   DDD  EEE   1   1    1 1      FFF  DDD  UUU   DDD  OOO       1    1 1      UUU  PPP  TTT   DDD  EEE   1   1 2      XXX  QQQ  SSS   NNN  MMM   1   1 ================================================================== シート選択後ボタンによりマクロ処理されるように考えています。どうか宜しくお願い致します。

  • Excelシートの統合するマクロなどがありましたらお教えください。

    各支店(約200)からExcelシートで送信されてくる報告内容を別のシートに一気にまとめるマクロ等はないでしょうか?ご存知の方よろしくお願いします。 (例) A支店  項目  aaa    bbb    ccc    ddd    eee        10    20     30    0     0         8    8      0     0      0               以下約300件 B支店  項目  aaa    bbb    ccc    ddd    eee        11    22     33    0     0         9    9      0     0      0               以下約300件      別シートに 項目  aaa    bbb    ccc    ddd    eee        10    20     30    0     0         8    8      0     0      0        11    22     33    0     0         9    9      0     0      0                   以下省略           よろしくお願いします       

  • エクセルのマクロについて教えて下さい。

    エクセルのマクロについて教えて下さい。 Sub Ref() Dim ax As String Dim num As Integer, i As Integer Dim arr As Variant Dim tex As String Range("A1").Select ax = ActiveCell.Formula arr = Split(ax, ",") For i = 0 To UBound(arr) num = i + 1 Cells(num, 1).Value = arr(i) Next i For i = 1 To 10 ActiveCell.Offset(, 1).Select tex = ActiveCell.Formula Selection.Resize(num, 1).Select Selection.Formula = tex Selection.Resize(1, 1).Select Next i End Sub このマクロを10行ほどまで対応させたいです。 例として2行の表ですが、           A         B   C  D   E  F 1 C100,C101,C102,C103 aaa bbb ccc ddd eee 2 C104,C105,C106,C107 とうい表を、     A B  C  D   E   F 1 C100 aaa bbb ccc ddd eee 2 C101 aaa bbb ccc ddd eee 3 C102 aaa bbb ccc ddd eee 4 C103 aaa bbb ccc ddd eee 5 C104 aaa bbb ccc ddd eee 6 C105 aaa bbb ccc ddd eee 7 C106 aaa bbb ccc ddd eee 8 C107 aaa bbb ccc ddd eee という表にしたいです。 結合してから展開しようと考えたのですが 1列目の文字列の最後にカンマが無い場合、ある場合がありまして、 対応する事が出来ませんでした。 マクロ初心者なので教えてください。 よろしくお願いします。

  • エクセルのマクロについて

    エクセル97のマクロについて教えてください。 下のようなエクセルシートがあると仮定します。 このシート全体を選択して用意してあるボタンを押すと、マクロが流れるようにします。 マクロの中身は、項目1~4の値が同じであれば、同じデータを一つにするというものを考えています。 たとえば下の例の場合、追番でいえば2と4のデータは同じなので、マクロ処理にかけると、追番の大きい4のデータは消え、2のデータの"200"項目にフラグ1が追加されるようにしたいのです。 項目の値が同じであれば、いくつでもデータを統一したいと考えています。 ================ エクセル シート例 ================================== 追番_項目1_項目2_項目3_項目4_100_200_300_400 ← 見出し ----------------------------------------------------------------- 1****AAA****BBB****CCC****DDD****1*********1****1**** 2****EEE****FFF****CCC****GGG****1**************1**** 3****HHH****FFF****KKK****JJJ****1****1****1********* 4****EEE****FFF****CCC****GGG****1****1*********1**** ↓ マクロ処理後 追番_項目1_項目2_項目3_項目4_100_200_300_400 ← 見出し ----------------------------------------------------------------- 1****AAA****BBB****CCC****DDD****1*********1****1**** 2****EEE****FFF****CCC****GGG****1****1*********1**** 3****HHH****FFF****KKK****JJJ****1****1****1********* =================================================================== 注:見出しの_とデータの中の*は空白を生めるためのもので、データとはまったく 関係ありません。 なにぶんエクセルVBAは初心者同然なもので... よろしくお願い致します。

  • ハッシュにおける値の取り出し

    初めて質問します。 Perl初心者なので、初歩的な質問かもしれませんが、 どなたかご教授お願いします。 下記のようなデータをDBから読み込み、ハッシュに 格納しました。しかし、個々の値にアクセスできず、 困っています。 例えば、NO01の項目1にアクセスしたい場合は、どうしたらよいのでしょうか。 %DATA NO  KOUMOKU1 KOUMOKU2 01 aaa AAA 02 bbb BBB 03 ccc CCC 04 ddd DDD 05 eee EEE よろしくお願いします。

    • ベストアンサー
    • Perl
  • エクセルで集計したいのですが・・・

    関数は少しわかりますが、マクロは分かりません。 今回は集計シートの集計数字を元シートに入力して、更に元シートにない項目を元シートの項目行に項目名を入れて集計数字を入れたいのです。 ただ、集計だけであれば「sumif」関数を使えば出来るのですが、元シートにない項目名を探し出して入力する方法がわかりません。教えてください。よろしくお願いします。 元シート  A  B       1 aaa 2 bbb 3 ccc 4 ddd 5 6 7 集計シート 項目 数量 1 bbb 1 2 aaa 2 3 ddd 1 4 eee 1 5 fff 1 6 ccc 2

  • SELECT時に可能な動作は?

    例えば Aテーブル NO 名前 1 aaa 3 bbb 4 ddd 6 eee というデータの入ったテーブルからデータを取得する際に 1 aaa 2 0 3 bbb 4 ddd 5 0 6 eee という風に間が抜けたデータ(この場合2と5)をフェイクとして行に追加した状態で取得するSQL文は存在しますでしょうか?

  • SQL文で数字+指定文字列がヒットする記述方法

    mySQLを使ってます。 SQL文で以下のことが実現したいです。 フィールドに登録されている文字列が http://www.AAA.jp/BBB/CCC/08191.html/?cp=waribiki http://www.AAA.jp/shop/DDD/EEE/08191.html http://www.AAA.jp/shop/DDD/EEE/ZZZ.html というタイプがあります。 SQL文で検索結果を表示したいのは、 http://www.AAA.jp/shop/DDD/EEE/数字.html のように右から「数字.html」の場合のURLパスだけを抽出したいです。 SELECT * FROM `テーブル名` WHERE `フィールド名` LIKE '%html' とやってみましたが、 http://www.AAA.jp/shop/DDD/EEE/ZZZ.html というものもヒットしてしまうため 右から「数字.html」の場合だけのSQL文の書き方を教えていただけないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • エクセルの重複データの抽出(条件付)

    エクセルの以下のようなデータから3時間以上連続で出現しているデータを抽出してその行に色をつけるようなマクロを組みたいのですがそのような方法はないでしょうか。 A列   B列 6/1 3:00 AAA社 6/1 3:00 BBB社 6/1 3:00 CCC社 6/1 2:00 AAA社 6/1 2:00 CCC社 6/1 2:00 DDD社 6/1 1:00 AAA社 6/1 1:00 DDD社 6/1 1:00 EEE社 6/1 1:00 FFF社 6/1 1:00 GGG社 6/1 0:00 AAA社 6/1 0:00 BBB社 6/1 0:00 CCC社 6/1 0:00 DDD社 6/1 0:00 GGG社 6/1 0:00 HHH社 ・ ・ ・ A列は日時、B列は企業名です。 B列の企業名が3時間以上連続して出現している行を抽出して、その行(または企業名)に色をつけるか、または重複してる企業名の一覧表示をしたいです。 この例の場合、AAA社とDDD社になります。 (CCC社は3回出現してるけど、3時間連続していないので対象外。) 3時間以上連続して出現というのがポイントです。 データは2000行ほどで、24時間分です。 マクロ初心者でいろいろ検索してみたのですが、わからずすごく困っています。よろしくお願いします。

  • 特定データの取り出しについて

    どうしても処理がわからなかったのでご教授頂けたら幸いです。 掲示板にて特定記事の上位表示固定の処理をしたいのです。 参考データ ----------------- No Name Date ----------------- 1 aaa 111 2 bbb 222 3 ccc 333 4 ddd 444 5 eee 555 ----------------- というテーブルデータがあったとして、 例えば、2番の記事を上位に表示したい場合は 掲示板上の表示で下記のようにしたいのです。 2.bbb > 222 1.aaa > 111 3.ccc > 333 4.ddd > 444 5.eee > 555 といったように2をきちんと切り抜いた状態です。 よろしくお願いいたします

    • ベストアンサー
    • MySQL

専門家に質問してみよう