
今回、自分ではどうしてもわからなく、ここで相談させてもらいました。
勤務表の書かれたエクセルファイルから、日ごとの勤務者を出したいと考えています。
勤務が新しく出るごとに毎回作り変えていたのでは、時間がかかってしまい大変です。
関数かマクロとかで、うまく抽出できる方法をご教授お願いします。
(状況)
勤務表.xlsと、当日勤務者.xlsのファイルは別ファイル。
勤務表.xlsは毎月更新され、今は当日勤務者.xlsを月に一度作り変えている。
マクロは完全な初心者でほとんどわからない。
勤務者は40人ほどの小さな会社。

A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No.3・4です!
何度もごめんなさい。
画像をよく見ると「勤務形態」が「休」などSheet1の項目にない場合もあるようですね!
そうなると前回のコードではエラーが発生してマクロが止まってしまいます。
エラー回避のために、どこでもよいので
On Error Resume Next
の1行を挿入しておいてください。
敢えて言えば
Range(ws1.Cells(5, 3), ws1.Cells(35, j)).ClearContents
For j = 4 To 34
の2行の間に入れて
Range(ws1.Cells(5, 3), ws1.Cells(35, j)).ClearContents
On Error Resume Next
For j = 4 To 34
といった感じがよいと思います。
これでSheet1の項目にない場合は空白となります。
親の仇のように「これでもかっ!」というくらい顔を出してごめんなさい。m(_ _)m
No.4
- 回答日時:
No.3です!
たびたびごめんなさい。
前回のコードはSheet1のデータをSheet2に表示させるコードでした!
アップされている画像の矢印をみると、逆の表示がご希望なのですね?
今一度コードを載せてみますので、変更してみてください。
前回アップした画像の配置通りとしています。
操作方法は前回と一緒です。
※ 今回もSheet2のA列は5行ずつ結合してあるという前提です。
Sub Sheet2からSheet1へ() 'この行から
Dim i As Long, j As Long, k As Long, M As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
j = ws1.Cells(4, Columns.Count).End(xlToLeft).Column
Range(ws1.Cells(5, 3), ws1.Cells(35, j)).ClearContents
For j = 4 To 34
For i = 9 To ws2.Cells(Rows.Count, 1).End(xlUp).Row Step 5
If ws2.Cells(i, j) <> "" Then
k = WorksheetFunction.Match(ws2.Cells(6, j), ws1.Columns(1), False)
M = WorksheetFunction.Match(ws2.Cells(i, j), ws1.Rows(4), False)
ws1.Cells(k, M) = ws2.Cells(i, 1)
End If
Next i
Next j
End Sub 'この行まで
画像をよくよくみると、Sheet2(元データ)のA列氏名は5行の真ん中にあるような気もします。
(セルを結合しているのではなく、担当場所と氏名が2行ずれているようにも見える)
この際ですのでその場合のコードも一緒に載せておきます。
Sub Sheet2からSheet1へ() 'この行から
Dim i As Long, j As Long, k As Long, M As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
j = ws1.Cells(4, Columns.Count).End(xlToLeft).Column
Range(ws1.Cells(5, 3), ws1.Cells(35, j)).ClearContents
For j = 4 To 34
For i = 11 To ws2.Cells(Rows.Count, 1).End(xlUp).Row Step 5 '9→11に変更
If ws2.Cells(i - 2, j) <> "" Then 'i → i-2 に変更
k = WorksheetFunction.Match(ws2.Cells(6, j), ws1.Columns(1), False)
M = WorksheetFunction.Match(ws2.Cells(i - 2, j), ws1.Rows(4), False) 'i→i-2に変更
ws1.Cells(k, M) = ws2.Cells(i, 1)
End If
Next i
Next j
End Sub 'この行まで
ご希望通りになればよいのですが・・・m(_ _)m
No.3
- 回答日時:
こんばんは!
>勤務表.xlsと、当日勤務者.xlsのファイルは別ファイル
とありますが、同じBookで別Sheetとしての一例です。
VBAになってしまいますが、その前に一手間かけます。
↓の画像のような配置で左側がSheet1・右側をSheet2としています。
Sheet2のA列は5行ずつ結合してあるというコトだとして・・・
余計なお世話かもしれませんが、両Sheetとも日付・曜日のセルはシリアル値にします。
Sheet1のA1セルに「西暦年」・C1セルに「月」の数値を入れるとします。
Sheet1のA5セル(セルの表示形式はユーザー定義から d とだけしておきます)に
=IF(MONTH(DATE($A$1,$C$1,ROW(A1)))=$C$1,DATE($A$1,$C$1,ROW(A1)),"")
B5セル(セルの表示形式はユーザー定義から aaa としておく)に
=IF(A5="","",A5)
という数式を入れA5・B5セルを範囲指定 → B5セルのフィルハンドルで31日までの
35行目までオートフィルでコピーしておきます。
次にSheet2のD6セルに
=INDEX(Sheet1!$A$5:$B$35,COLUMN(A1),ROW(A1))
という数式を入れ下のD7セルまでとりあえずコピー!
D6セルの表示形式はユーザー定義から d
D7セルの表示形式はユーザー定義から aaa
としておき、D6・D7セルを範囲指定 → D7セルのフィルハンドルで31日の
AH列までオートフィルでコピー!
これでSheet1のA1・C1セルに数値を入力すれば自動で日付・曜日が表示されます。
(もちろん大の月・小の月にも対応しています)
以上の下準備ができたうえで・・・
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub 表示() 'この行から
Dim i As Long, j As Long, k As Long, M As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1") '←「Sheet1」の部分は実際のシート名に!
Set ws2 = Worksheets("Sheet2") '←「Sheet2」も実際のシート名に!
For i = 9 To ws2.Cells(Rows.Count, 1).End(xlUp).Row Step 5
Range(ws2.Cells(i, "D"), ws2.Cells(i, "AH")).ClearContents
Next i
On Error Resume Next
For i = 5 To 35
For j = 3 To ws1.Cells(4, Columns.Count).End(xlToLeft).Column
If ws1.Cells(i, j) <> "" Then
k = WorksheetFunction.Match(ws1.Cells(i, j), ws2.Columns(1), False)
M = WorksheetFunction.Match(ws1.Cells(i, 1), ws2.Rows(6), False)
ws2.Cells(k, M) = ws1.Cells(4, j)
End If
Next j
Next i
End Sub 'この行まで
※ 月が変わるたびにマクロを実行してもよいのは当然ですが、
Sheet1のデータ変更があるたびにマクロを実行しても構いません。
参考になりますかね?m(_ _)m

No.2
- 回答日時:
これは難しいですね。
例えば、転記先の1日の行。
同じ名前が2度発生してますね。
この条件付けが不明瞭です。
転記先の勤務形態・・でしょうか。
転記元に無い「レジ*」の扱いはどうなっているのか。
転記元、休日出勤・変更・調整欄はどう使うのか。
ぱっと見ただけでこれだけの情報が足りません。
(情報が足りたとしても、それなりに難しい処理だと思いますが)
・・というようなマクロが必要ですが、
> マクロは完全な初心者でほとんどわからない。
状況で、後に人が増えた減ったのメンテナンスはどうされますか?
その辺りも考慮するとなると、ますます凝った仕様が必要です。
そんなこんなで、表の構成から再考するのが先決と思いますよ。
お力になりたいのは山々ですが、それが本音です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 求人情報・採用情報 シフト勤務について 2 2023/08/05 16:53
- アルバイト・パート 大学生新人バイトで7連勤は普通なのでしょうか。 2 2023/04/29 17:40
- 労働相談 ① ・契約社員。業務委託で勤務。 ・時給1180円。毎年1-20円程のベースアップあり。 ・週5の7 1 2022/04/08 21:41
- アルバイト・パート 結果として1週間無断欠勤をしてしまいました。 2 2022/10/09 08:30
- ハローワーク・職業安定所 失業保険の特定理由離職者に当てはまるか知りたいです。 パートで3ヶ月おきに更新しており1年半勤務して 7 2022/08/25 17:12
- その他(恋愛相談) 私は21歳の女で精神疾患があります。 今月からアルバイトを日曜火曜木曜の週三日で始めましたが、2週間 5 2022/10/16 06:32
- 会社・職場 計算できる方がいらしたら教えてください。 私は元々フルタイムの正社員で勤めていて、そのときの月収は約 6 2023/06/23 14:19
- Excel(エクセル) 警備の夜勤の仕事をしています。 誰か助けてください。エクセルのことです。 月の勤務表(表1)と月の人 2 2022/04/13 12:29
- いじめ・人間関係 この度、復職するのですが…。 4 2022/10/24 02:09
- 労働相談 当直勤務の時間外について。 今年の4月から新しく社会人になった者です。 私の職場では当直勤務があり、 4 2022/05/15 17:03
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
何回やってもうまくいかないことは?
みなさんには、何回やってもうまくいかないことはありますか?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
複雑なシフト表から1日ごとの出勤者、シフトを抜き出したいです
Excel(エクセル)
-
エクセルで勤務表の出勤者を抜き出したい。 日付 名前 5/16 5/17 5/18 5/19 田中
Excel(エクセル)
-
月間勤務表から1日~31日までの各日付ごとに出勤している職員を書き出す方法
Excel(エクセル)
-
-
4
月のシフト表から当日のシフトを抽出したいです
Excel(エクセル)
-
5
関数を使用して、エクセルの勤務表から、勤務形態別に担当者を抽出したい
Excel(エクセル)
-
6
エクセルで、勤務表から 日付別に勤務者と勤務形態を抽出して、別シートに抽出したい
Word(ワード)
-
7
再度質問です。シフト表から日毎の勤務者を抽出する方法
Excel(エクセル)
-
8
エクセルで出勤表から出勤者の名前を出したいのですが。
Excel(エクセル)
-
9
エクセルで、勤務表から 日付別に勤務者と勤務形態を抽出して、別シートに抽出したい
Excel(エクセル)
-
10
シフト管理、月間のシフト表を別シートで日ごとの時間別で出勤者の名前を表示したい
Excel(エクセル)
-
11
エクセル シフト勤務表から、シフト別に氏名を抽出。
その他(ソフトウェア)
-
12
会員名簿から出席者のみ一覧表の作成
その他(Microsoft Office)
-
13
作業別のシフト表から職員別のシフト表へ反映させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 偶数月の15日(土日祝...
-
Excelの数式について教えてくだ...
-
Excelのメニューについて
-
VLOOKUP FALSEのこと
-
エクセル内に読み込んが画像の...
-
【マクロ】1回目の実行後、2...
-
勤務外時間を出す表が作りたい
-
Excelで作成した出欠表から日付...
-
エクセルの数式について教えて...
-
【マクロ】参照渡しとモジュー...
-
Excelの条件付書式について教え...
-
【マクロ】シート追加時に同じ...
-
マクロを実行すると、セル範囲...
-
【マクロ】参照渡しについて。...
-
Excel 日付の表示が直せません...
-
エクセルで、数字の下4桁の0を...
-
【マクロ】Call関数で呼び出し...
-
別のシートの指定列の最終行を...
-
Excelのデーターバーについて
-
Excelでの文字入力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】重複する同じ行を、...
-
Excelの条件付き書式のコピーと...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
Excel 日付の表示が直せません...
-
エクセル 同じ行の隣り合う数字...
-
エクセル条件付き書式について。
-
エクセルの数式につきまして
-
ファイル名の変更
-
エクセル 数字のみ抽出につて
-
Excelの開始ブックを固定したい...
-
エクセルの数式について教えて...
-
エクセルのセルをクリックする...
-
=INDIRECT(RIGHT(CELL("filenam...
-
エクスプローラーで見ることは...
-
Excelの関数で質問です
-
至急お願いいたします 屋上の備...
-
エクセルでセルに入力する前は...
-
関数を教えて下さい
-
Excel 関数での質問です
おすすめ情報