プロが教えるわが家の防犯対策術!

ExcelのVBAについて質問させていただきます。 やりたいことが複雑なため自分ではどうしようもできないのでアドバイスをいただけたらと思います。 やりたいことはシフト表というシートにその日のシフト表を貼り付けるてマクロを仕込んだボタンを押下すると個人別勤務表というシートにその日その日の勤務が反映できたらと思っています。個人別勤務表のシートは200枚くらいあるのでマクロのループで回せたらと考えています。(最終的には○日以上出勤者を抽出し印刷というマクロを組む予定なのでこの枚数になってしまいました。またシフト表には”シフト番号”・”出勤時間”・”退勤時間”・”社員番号”・”氏名”が入力してあり、各日200シフトくらいあります。 例でいうと1/1の勤務をシフトをシフト表シートに貼り付けてマクロを仕込んだボタンを押下すると一郎さん個人別勤務表の1/1の行にその日の”シフト番号”・”出勤時間”・”退勤時間”が反映されるというものです。

【シフト表】 A B C D E
     1シフト 出勤 退勤 社員番号 氏名
2 ① 9:00 17:00 001 一郎
3 ② 9:10 17:10 002 二郎
【個人別シート】(シート名は社員番号_氏名)
A B C D E
1 社員番号 氏名
2 日付 曜日 シフト 出勤 退勤
3 1/1 月 ① 9:00 17:00

A 回答 (3件)

できると思いますが、質問者さんはそのプログラム(マクロ)の中で、


どの処理のやり方が分からないのですか?
あるいは、どの記述方法が分からないのでしょうか。 
 
・・・
残念ですが、ここは「代わりに作ってください」と作業依頼をする場所ではありません。
分からない点を自分で対処できるためのアドバイスを受ける場所です。
作業依頼、製作依頼はお金を出して業者に委託しましょう。

この質問内容では、
 「代わりに作れ!ぜーんぶオレ様の成果にするwww」
と受け取れるのです。

まあ、それでも良いのですが、
せっかく作ってもらっても、それが一見して正しく動作しているように見えて、
使ってみたら色々と不具合を含んでいたなんて事もあります。
それを修正できるのは作った人だけです。
他の人が修正なんてできませんから。

・・・
そんなわけで、シフト云々と仰られていますので、会社の上司と相談して適切な業者に製作を依頼することを勧めます。
「そんな予算無い」と言われたら一つずつ手作業で処理しましょう。
そのほうが結果的に早く作業が終わると思います。


・・・余談・・・ 
~処理方法の考え方~
 
手作業で行う手順を一つずつ紙に書き出し、その手順を一つずつマクロに置き換える。
その制作作業の中で分からない点を質問するようにすると良いでしょう。
    • good
    • 1

No.1の回答を読みました。


銀輪> ここは「代わりに作ってください」と作業依頼をする場所ではありません。

なるほど、

> やりたいことが複雑なため自分ではどうしようもできないので

質問文を読むと、やろうとしていることは、簡単で単純なことのように思えます。
ただし、

> シフト表というシートにその日のシフト表を貼り付けるてマクロ
> 例でいうと1/1の勤務をシフトをシフト表シートに貼り付けて
> マクロを仕込んだボタンを押下すると一郎さん個人別勤務表の1/1の行にその日の”シフト番号”・”出勤時間”・”退勤時間”が反映される

これが、ちょっと分かりません。 「1/1」は「1月1日」の意味、「3/24」は「3月24日」の意味でしょうか。 【個人別シート】に「1月1日」の行'にデータを入れるには、どこかに日付データがないと出来ません。【シフト表】には、「1/1」のようなデータのあるセルがないようです。 「1/1」のようなデータの入手方法はどう考えているのでしょう。 
仮に、「10/10」のデータの【シフト表】を「シフト表シート」に貼り付けた後で、【個人別シート】に「10月10日」の行を作ってデータを貼り付けた後で、「10/8」のデータの【シフト表】を「シフト表シート」に貼り付けて、処理することになった場合には、【個人別シート】の「10月8日」の行はどこにおけば良いのでしょう。
また、10月10日までは、個人別勤務表のシートは200枚であったが、「10/11」のデータの【シフト表】には、今までなかった4名の社員番号や氏名のデータがあった場合には、データを個人別勤務表のシートに反映させるときに、個人別勤務表のシートを4枚追加させるようにするのでしょうか。あるいは、何かの間違いかもしれないので、警告を出すようにするのでしょうか。
「一郎さん個人別勤務表」に該当する【個人別シート】のシート名は社員番号になっているのでしょうね。同姓同名とか結婚離婚で姓が変更になるとあるでしょうし。そうなると、【個人別シート】の1行目のF列以降に姓名や入退者の年月日の記載があった方が何かと都合良さそうです。

銀輪> 作業依頼、製作依頼はお金を出して業者に委託しましょう。

ちょっと、業者に頼むのには、簡単過ぎるように思います。
個人別勤務表というシートにシフトの記録を残すことが主要な目的である場合、もとにしたそれぞれのシフト表を日付とともにある程度の期間残しておく方が、業務としては妥当な気がします。
それに、今後も仕様変更のようなことがチョコチョコありそうなので、自分でつくって、修正なども自分でやった方が、簡単そうです。 

> 最終的には○日以上出勤者を抽出し印刷というマクロを組む予定

「○日以上出勤者を抽出」は、通常ならば、「4月1日から9月30日までの間で、○○日以上」のような期間指定をするのだろうと想像します。そうすると、「12/29」や「1/3」には年のデータも必要となるでしょう。 また、すでに8月末までに退職している社員が、「4月1日から9月30日までの間で、○○日以上」に該当している場合、抽出の対象に含めるのかも気になります。

> アドバイスをいただけたらと思います

自分で出来る範囲のところだけでも、マクロの処理を考えて、あと、どうにも見当がつかないところを文章に記述して、それを質問に投稿してはいかがでしょうか。
まるで見当違いの方法を思考してコードに書いていた場合でも、このサイトの凄い腕を持つ回答者さんは、指導・アドバイスをしてくださると思います。
    • good
    • 0

こんにちは



>やりたいことが複雑なため自分ではどうしようもできないので
>アドバイスをいただけたらと思います
「どうしようもなくらいに複雑」だと、仮にマクロなり何なりで解決したとしても、後で、改善もメンテもままならずお手上げとなりかねません。
まずは、複雑にならないように整理するのが宜しいかと。

通常であれば、この手の処理には「元データ」があって、それさえきちんと管理できていれば、それをもとに「シフト表形式」や「個人用の抽出」、「印刷」などのデータは比較的簡単に作成できるはずです。
一方で、ご質問文には記されていないので想像になってしまいますが、現状の形式では、元となるべきデータは上書きされて消えてしまい、点在するデータ群を統合すると「元データ」とも言うべきものができるような形式になっているのではないかと思われます。

>その日のシフト表を貼り付けるてマクロを
なるものを追記方式にして「元データ」とし、それをもとに「シフト表」や「個人別勤務表」を作成する方がわかりやすいと思いますけれど…
現状の元となるデータには「日付」の項目が無いようですが、これもあった方が宜しいかと。

「元データ」さえきちんとできれば、「シフト表」や「個人別勤務表」は関数式をあらかじめシートに設定しておくことで自動作成が可能と思います。
もちろん、これもマクロで行っても良いですが、(推測するところ)現状では作成できないようですので、当面の対応として関数等で対応し、マクロの勉強をして作成できるようになったら切り替えるのが良いのではないでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!