• 締切済み

エクセルVBAの質問です

エクセルVBAの質問です 今勤務表を作成しているのですが 日1・日2・遅1・遅2・早1・早2・休 等を自動的にランダムで振り分けることはできるのでしょうか? 拙い説明でわかりにくいと思いますが、どうぞよろしくお願いします。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

VBAを使わなくとも作業振り分け用のシートを用意してそれを利用してはいかがでしょう。 例えば次のようにします。 A1セルには氏名または職員番号、B1セルには勤務振り分けとでも入力し、B列の2行目から下方に日1、日2などの表示をさせます。 そのための作業列を設けます。 D2セルから下方にお示しの日1、日2などをD8セルまでに入力します。 E2セルからE8セルまでにはそれぞれの勤務形態で必要な人数を8とかの数値で入力します。 F2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(D2="","",SUM(E$2:E2)) H2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(ROW(A1)>SUM(E$2:E8),"",RAND()) 最後に答えを表示させるためにB2セルには次の式を入力し下方にオートフィルドラッグします。 =IF(AND(COUNTA(A$2:A2)>MAX(F:F),A2<>""),"作業人数が予定人数(I列)を超えています、同じになるようにH列の人数を調整してください",IF(A2="","",IF(RANK(H2,H:H,1)<MIN(F:F),D$2,IF(COUNTIF(F:F,RANK(H2,H:H,1))=0,INDEX(D$2:D$8,MATCH(RANK(H2,H:H,1),F:F,1)),INDEX(D$2:D$8,MATCH(RANK(H2,H:H,1),F:F,0)-1))))) ここで得られたデータをもとに別なシートでシフト表などを作成すればよいでしょう。

回答No.1

>自動的にランダムで振り分けることはできるのでしょうか の意味ですが、社員のシフトを自動的に振り分けるという意味でしょうか。 それとも出勤データを何らかの基準で集計する目的で並べ変えるということでしょうか。 やりたいことをもう少し具体的に書いていただければアイデアは出るかもしれません。 基本的に、ランダムなデータを発生させるにはRandmaize関数を遣いますが、それをどう活用するかは目的やデータ次第です。 その辺をもうちょっと具体的に知りたいところです。

関連するQ&A

  • エクセルの関数教えてください。

    勤務表をエクセルで作成しています。 一日の勤務が 早、早1、日、遅、夜、明、休の表示になっていて 勤務表を見ながら昼食の注文をしています。 昼食を食べる人は早、早1、日、遅の勤務者だけです。 一日、早、早1、日、遅が何人いるかカウントしたいのですが教えていただけないでしょうか。

  • エクセルVBAでできる?

    こんばんは。大変困った事態発生中です。 エクセルマクロ?VBA?で作るように指示があったのですが (1)エクセルのセルベースではないフォーマットで様々な数値が入力できるシステムを作れ (2)数値を入力したら『登録』ボタンがあり、次の画面へ進む (3)数値を利用して様々な表・グラフを自動作成するシステムを作れ (4)数値をいろんな表に活用及び自動入力されるようにしろ (5)ネット上に立ち上げて、暗証を知る人間のみ閲覧ができるようにしろ (6)その表は一切コピー・保存ができないようにしろ との事で、それをしている人がいるので、短時間(1日)で簡単に作成できる! と言われました。 そんなわけで明日までに仕上げなければいけないのですが、どなたか虎の巻をご存知なら教えて下さい。 また、こうやったら(簡単に)できるんじゃない?という方、どんなささいな事でもいいので教えて下さい。 私は、エクセルは使っている、という程度の人間です。 よろしくお願いします!!!!!!!!!!!!!!!!!!!!!

  • VBAについての質問です

    VBAの数式の設定で質問がございます。 各社員の勤務表にある毎月の各案件に対する作業時間を 1つの表にまとめたいと思います。 エクセルの場合は下記の数式となりますけど、人数と案件は多いですので、VBAを使って作業量を減らしたいと思います。 =HLOOKUP(A3,'[2014勤務表.xlsx]1月'!A1:D6,6,FALSE) VBAについての書き方を教えてください! よろしくお願いします!

  • エクセルVBAの質問です

    エクセル2000で勤務表を作成しています 2009年7月というシートに2つの表があり、「表1」はC列に10名の氏名があり 各行の(F~AJ)には6月21日~7月20日までの毎日の出退勤(○、休、半等) を記入します。 「表2」は「表1」を暦月に変換するため7月1日~7月31日(F~AJ)となっていて、 表1を作成するとC列の氏名及び7月1日~7月20日(Q~AJ)までの出退勤も(F~Y)へ 同時に入力されるようにしてあります。 さて、新規シート2009年8月を作り「表1」に氏名(入退社で増減等の変更が あります)と1ヶ月分の出退勤を入力後、以下のことをVBAで行いたいと思います。 ボタンにより、2009年7月シートの「表2」と氏名がマッチする行に「表1」の7月21日~7月31日(F~P) の出退勤のみを「表2」の(Z~AJ)にコピーするようにしたいのですが可能でしょうか。 皆様のお力添えをお願いできればと存じます。

  • エクセルVBA(2007)での時間計算について

    エクセルVBA(2007)での時間計算について お聞きします。 勤怠集計表をVBAで作成しています。 ボタンを押すと各社員の勤務時間の計算を自動で行うマクロを作成していますが、 勤務時間の計算で困っています。 (1)5:00~22:00での勤務時間、(2)22:00~の勤務時間を出力します。 出社時間・休憩開始時間・休憩終了時間・退社時間の項目があります。 例えば、上記の項目順で、10:00・12:35・13:25・0:30の場合、深夜時間での計算がうまくいきません。 休憩時間を引くと(1)は11:10時間、(2)は2:30時間になると思いますが、計算はどの様にすれば良いでしょうか? 教えて下さい。

  • エクセル 数式を教えてください

    エクセル数式の本をみても、どうしても設定できない数式があります。 (そもそも、やりたい内容に対応する数式があるのかすら わからないのですが・・) 店舗運営用で係設定をしているのですが、係だけを抽出した 別の表を作成したいと思っています。 A列には日付が1~31日・1行目には人名(全店員分)がはいった表 があります。 例:閉店業務当番を☆マークでシフトの表に設定しています。   エクセルではないですが、雰囲気はこんな感じです。     山田 鈴木 森    1 早  遅  ☆   2 ☆  早  遅   3 休  ☆  遅   4 ☆  早  休   5 遅  ☆  早  ↑ 上記のような表とは別に☆だけついている人のシートを   作成したいです。            ☆       1 森       2 山田       3 鈴木       4 山田       5 鈴木  現在のところ、目でさがしてて入力しています。  ⇒日付を入力すると、その行から☆をさがして、そこに対応する   人名を表示させる数式を知りたいと思っています。  説明が分かりにくいとは思いますが、宜しくお願いいたします!!        

  • エクセル VBA 日付入力?

    エクセル 2000のVBAにて簡単な 日程表を作成しています。 フォームの テキストボックス1に 10/8 を入力したら テキストボックス2には 10/15 ~ テキストボックス15には 1/21 が自動で 入力されるようにするには、どのようにすればよろしいでしょうか?

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

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

  • エクセルで警告音の出し方についての質問です。VBA

    エクセルで警告音の出し方についての質問です。VBA データを外部から取り込みエクセルのグラフを作成しております。 データはランダムに数値が入ります。 数値が100以上の場合にPCから5分間、警告音を鳴らしたいのですがどのようなプログラムを組めばよいでしょうか? なお、警告音はエンターキを押して解除できるようにしたいです。 宜しくお願い致します。

  • VBAの質問です。

    エクセルVBAの質問です。商品と価格をCSVでデータを取り込んで別の表に商品一覧に価格の合計をSAMIFの常駐で出しているのですが商品項目が増えた場合に表に自動で追加できるようにしたいのですが、どのようなコードを書けばいいんでしょうか?是非教えていただけないでしょうか?