Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ランダムな日付で入力されたデータを集計表のその日付に自動で転記したい。

141 views
Skip to first unread message

oyazi100

unread,
Aug 27, 2009, 2:18:02 AM8/27/09
to
Office2003です。6名がランダムに出勤してそれぞれの日報に職種、職能、職域、出勤時間、退勤時間、経過時間を入力しています。入力規則のリストから選んで簡単に入力できるようにしてあります。
経過時間は計算式で自動です。それぞれのシートは更新ボタンをクリックすると、日付が当日になりデータ入力行は消されるようにしてあります。
ランダムに出勤し入力されたデータを1ヶ月の集計表に出勤した日付にデータを手入力で転記しています。また、給与の計算のため職能・職域・経過時間を例えば”事務2階70分”の人は単価…円、”翻訳1階50分”の人は単価。。。円、というように日報のみっつのセルをひとつにして転記しています。この転記も自動的にできませんか?

F

unread,
Aug 27, 2009, 4:10:19 AM8/27/09
to

こんにちは Fです

> Office2003です。6名がランダムに出勤してそれぞれの日報に職種、職能、職域、出勤時間、退勤時間、経過時間を入力しています。入力規則のリストから選んで簡単に入力できるようにしてあります。
> 経過時間は計算式で自動です。それぞれのシートは更新ボタンをクリックすると、日付が当日になりデータ入力行は消されるようにしてあります。
> ランダムに出勤し入力されたデータを1ヶ月の集計表に出勤した日付にデータを手入力で転記しています。また、給与の計算のため職能・職域・経過時間を例えば”事務2階70分”の人は単価…円、”翻訳1階50分”の人は単価。。。円、というように日報のみっつのセルをひとつにして転記しています。この転記も自動的にできませんか?

マクロで可能ですが、VBAは使えますか?

oyazi100

unread,
Aug 27, 2009, 5:51:02 AM8/27/09
to

"F" からの元のメッセージ:

早速ありがとうございます。
マクロは本を買ってきて独力で勉強しています。
はじめたばかりでわからないことだらけです。
なんとか理解するようにがんばってみますのでよろしく教えてください。

F

unread,
Aug 27, 2009, 8:00:19 PM8/27/09
to
こんにちは Fです

1.日報・集計シートのタイトル・データ範囲は?
2.集計表は複数存在しますか?

oyazi100

unread,
Aug 29, 2009, 4:46:01 AM8/29/09
to

"F" からの元のメッセージ:

日報は業務日報という名で、名前ごとに6ファイルあり、ひとつのファイルにひにち分のシートがあり、シートの中は七つの表があり、午前中2勤務、午後3勤務というように一日最高7勤務までできます。データ範囲はA1からO39と入力規則のX54からAC132です。

勤務時間、給与、給与台帳、金種表、が集計シートになっていて、元にしているデータファイル(社員名、単価表、所得税一覧表、年間祝日表、封筒印刷、など)があります。

前の集計シートというのは勤務時間の集計シートでファイルです。名前は勤務時間です。
一月一枚のシートで、中には一日から月末まで7勤務分の表が6名分それぞれあります。
データ範囲はA1からAT528と入力規則のAY536からAZ614です。

F

unread,
Aug 30, 2009, 9:17:46 PM8/30/09
to
こんにちはFです

> 日報は業務日報という名で、名前ごとに6ファイルあり、ひとつのファイルにひにち分のシートがあり、シートの中は七つの表があり、午前中2勤務、午後3勤務というように一日最高7勤務までできます。データ範囲はA1からO39と入力規則のX54からAC132です。
>
> 勤務時間、給与、給与台帳、金種表、が集計シートになっていて、元にしているデータファイル(社員名、単価表、所得税一覧表、年間祝日表、封筒印刷、など)があります。
>
> 前の集計シートというのは勤務時間の集計シートでファイルです。名前は勤務時間です。
> 一月一枚のシートで、中には一日から月末まで7勤務分の表が6名分それぞれあります。
> データ範囲はA1からAT528と入力規則のAY536からAZ614です。

ひとつのブックで管理されているのかと思っていましたが、データ範囲がちょっと複雑ですね
処理は毎月月末などに
業務日報ファイル(A)内の7つの表(日にち分1~31シート)からデータを
勤務時間ファイル(B)の集計シート(7勤務分の表が6名分)に転記する
ですよね?

1.マクロを個人用マクロへ保存する
2.各データ範囲の左上のセルに名前の定義を設定する
3.マクロを作成
4.A・Bファイルを開いている状態でマクロ実行しデータを転記
でしょうか

どの辺りが分からないのでしょう?

oyazi100

unread,
Aug 31, 2009, 8:29:02 PM8/31/09
to

"F" からの元のメッセージ:

ありがとうございます。
処理は:週給の人もいますので、いままではだいたい毎日転記していました。
業務日報は: 7つの表からデータを転記しますが、日にち分は6名まちまちで月にすると
1名分10~20シートぐらいでしょうか。
勤務時間は:タイムレコーダーのタイムカードと同じような表が1名につき7つあり、勤務時間を入力すると単価別に集計できます。勤務形態の種類が多いので単価の種類を
ここで職能、職域、経過時間の3つで22とおりにわけて集計できるようにしてあります。
1,2,3、も勉強中です、4は責任者の私がいないときでも6名はAファイルに入力していますので、私がBファイルを開いたときに自動的に転記されればいいなと思っています。
よろしくおねがいします。

jpa...@microsoft.com

unread,
Aug 31, 2009, 10:43:53 PM8/31/09
to
"F" <us...@microsoft.com> wrote
in message news:eZ1OLK3J...@TK2MSFTNGP03.phx.gbl...
> こんにちは Fです
(以下省略)

携帯でメールのやりとりをしてるんじゃないんだから、
1回1回チマチマと確認ばかりをしてるのは
NetNews の活用方法としては 適切じゃないですね。
質問者に余計な負担をかけてるだけにしか見えません。

確認すべき事項はできるだけまとめて行い、
アドバイスも具体的に、想定ケースで行うべき。
「3.マクロを作成」なんて書いたって、何のアドバイスにもなってません。
一生懸命な質問者に 余計な負担をかけてるだけです。

選挙違反を監視する会

unread,
Aug 31, 2009, 11:32:22 PM8/31/09
to

"jpa...@microsoft.com" <jpa...@microsoft.com> wrote in message
news:eRjTQ4qK...@TK2MSFTNGP05.phx.gbl...

F

unread,
Sep 1, 2009, 10:10:39 PM9/1/09
to
こんにちは Fです

> ありがとうございます。
> 処理は:週給の人もいますので、いままではだいたい毎日転記していました。
> 業務日報は: 7つの表からデータを転記しますが、日にち分は6名まちまちで月にすると
> 1名分10~20シートぐらいでしょうか。
> 勤務時間は:タイムレコーダーのタイムカードと同じような表が1名につき7つあり、勤務時間を入力すると単価別に集計できます。勤務形態の種類が多いので単価の種類を
> ここで職能、職域、経過時間の3つで22とおりにわけて集計できるようにしてあります。
> 1,2,3、も勉強中です、4は責任者の私がいないときでも6名はAファイルに入力していますので、私がBファイルを開いたときに自動的に転記されればいいなと思っています。
> よろしくおねがいします。

貴方のやりたい事はイメージできますが、範囲が広すぎて...全てフォローするのは無理かと...

「Bファイルを開いたときに」は
BファイルのThisWorkBookのWorkbook_Openイベントで可能かと思います


jpa...@microsoft.com

unread,
Sep 2, 2009, 9:31:26 AM9/2/09
to
"F" <us...@microsoft.com> wrote
in message news:OKz0XK3K...@TK2MSFTNGP02.phx.gbl...
> こんにちは Fです
(略)
> 貴方のやりたい事はイメージできますが、範囲が広すぎて...全てフォローするのは無理かと...
>
> 「Bファイルを開いたときに」は
> BファイルのThisWorkBookのWorkbook_Openイベントで可能かと思います

ろくなフォローができないのなら、質問者に負担をかけるような確認行為は
控えましょう。
あなたが何度も色んな確認をするので、元記事投稿者は 一生懸命に
たくさんの文字を打って説明しています。
それに比べて あなたのフォローと言ったら、具体的な内容はゼロです。
「全てフォローするのが無理」とは詭弁で、「何らフォローになっていない」
「一切フォローしていない」というのが事実です。

非常に迷惑な投稿者ですね。

はぐれねこ

unread,
Sep 2, 2009, 10:16:59 AM9/2/09
to
お節介で横槍ではありますが、すこしきのどくになってきたので・・・
いろいろな考え方があるとは思いますが、私はマクロは単純に作業の記録だと
思っています。
これまで手作業でされていたということですから、「新しいマクロの記録」
(Excel2003)で、一通りの作業を記録してみて、VBAで編集してみてみてはいかが
でしょうか。それぞれの記述を調べることにより、マクロの関数も分かってきま
すし、どれが余分な文かが分かってきます。それを削除し、同じことの繰り返し
ならば、変数を設定して、繰り返し処理を。場合によっては処理が違うときは、
分岐処理を。だいたい、代入処理と分岐処理と繰り返し処理が使うことができれ
ば、(独学なので正確なことばではないかもしれませんが)ある程度マクロはかけ
ます。ただし、VBAのヘルプで、関数の引数の意味を調べるのも大変ですが。
なれてきたら、速い処理をめざします。それにはある程度の数学の知識も必要に
なってきますが。たとえば数列の知識とか。あとはどれだけメモリを使っている
かなど。
一通りの作業の記録が膨大になりそうならば、よく使う小さな部分だけから記録
してみてはいかがでしょうか。
あきらめずに、チャレンジしてみてください。
長い文で失礼しました。
追記
引用文が多すぎます。最低限度にしましょう。


--
はぐれねこ

/\_____/\
=( ^ _ ^ )=

T. Sugita

unread,
Sep 6, 2009, 9:15:39 AM9/6/09
to
とりあえず、簡易的なシートで考えてみました。

まず転記先の "勤務時間.xls" を開くと仮定して、
1. 転記元ファイルを開く
2. 転記先、転記元のシートを選択する
3. 転記する
4. 転記元を閉じる
という手順で行うものとします。
さらに、とりあえず1人分のデータを扱うものとし、
複数の場合は拡張が必要となります。
また、転記済かどうかはチェックしていませんので、
毎回全て転記します。

データは、
転記先ファイル名: 勤務時間.xls
シート名: 勤務時間
A1: 日付
A2~A32: 1~31
B1: 勤務時間
B2~B32: (空欄)
転記元ファイル名: 名前.xls
シート名: Sheet1
A1: 日付
A2: 9/3
B1: 経過時間
B2: 02:30
シート名: Sheet2
A1: 日付
A2: 9/6
B1: 経過時間
B2: 07:00
とし、転記元の各シートの A1 に "日付" と記述されたシートを
転記対象シートとしています。

マクロは、転記先ファイル "勤務時間.xls" ファイルに記述するものとし、
ファイルを開いた後、「ツール」→「マクロ」→「Visual Basic Editor」
→「挿入」→「標準モジュール」
の順で開き、開いたウィンドウにマクロを記述、または貼り付けします。

' 全て転記
Public Sub tenki_all()
Workbooks("勤務時間.xls").Activate
tenki "名前.xls"
End Sub

' 転記マクロ
Sub tenki(book_name As String)
Dim src_book As Workbook, dst_book As Workbook

' アクティブなワークブックを転記先とする
Set dst_book = ActiveWorkbook

' 転記元と同じフォルダにある指定されたファイルを開く
Set src_book = Workbooks.Open(dst_book.Path & "\" & book_name)

' 勤務時間を転記する
tenki_kinmu src_book, dst_book.Worksheets("勤務時間")

' 転記元ファイルを(問い合わせなしで)閉じる
src_book.Close False

' 転記先をアクティブにして、終了する
dst_book.Activate
End Sub

' 勤務時間を転記
Sub tenki_kinmu(src_book As Workbook, dst_sheet As Worksheet)
Dim src_sheet As Worksheet, line As Integer

' 転記元の各シートを(表示/非表示を含め)チェック
For Each src_sheet In src_book.Worksheets

' A1 が "日付" の場合
If src_sheet.Cells(1, 1) = "日付" Then

' 転記先の行位置(1+日付)を求める(1日が2行目)
line = 1 + Day(src_sheet.Cells(2, 1))

' 転記元の B2 を転記先に代入する
dst_sheet.Cells(line, 2) = src_sheet.Cells(2, 2)

End If
Next
End Sub

マクロは、tenki_all() を実行するものとし、
「ツール」→「マクロ」→「マクロ」→「tenki_all」を選択→「実行」
か、ツールバーにマクロボタンを貼り付けて実行してください。
必要であれば、ファイルが開いたときに自動的にマクロを実行すること
も可能です。

実際のシートに合わせるには、行位置、列位置、複数勤務、複数社員等、
色々拡張する必要がありますが、手作業でやられているということは
全体像を把握されているということですので、少しずつ拡張して、
一つ一つ解決された方が良いかと思います。

マクロ中、.Cells(行,列) の形式が多々出てきますが、
A1 が .Cells(1,1)、A2 が .Cells(2,1)、B1 が .Cells(1,2)
のように、行位置が手前にきますので、ご注意ください。
(固定された位置であれば、Range("A1") 等でもかまいません)

--
杉田
nws-...@bp.iij4u.or.jp

0 new messages