今回、自分ではどうしてもわからなく、ここで相談させてもらいました。
勤務表の書かれたエクセルファイルから、日ごとの勤務者を出したいと考えています。
勤務が新しく出るごとに毎回作り変えていたのでは、時間がかかってしまい大変です。
関数かマクロとかで、うまく抽出できる方法をご教授お願いします。
(状況)
勤務表.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も見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
複雑なシフト表から1日ごとの出勤者、シフトを抜き出したいです
Excel(エクセル)
-
エクセルで勤務表の出勤者を抜き出したい。 日付 名前 5/16 5/17 5/18 5/19 田中
Excel(エクセル)
-
月のシフト表から当日のシフトを抽出したいです
Excel(エクセル)
-
-
4
月間勤務表から1日~31日までの各日付ごとに出勤している職員を書き出す方法
Excel(エクセル)
-
5
エクセルで、勤務表から 日付別に勤務者と勤務形態を抽出して、別シートに抽出したい
Word(ワード)
-
6
関数を使用して、エクセルの勤務表から、勤務形態別に担当者を抽出したい
Excel(エクセル)
-
7
再度質問です。シフト表から日毎の勤務者を抽出する方法
Excel(エクセル)
-
8
エクセルで、勤務表から 日付別に勤務者と勤務形態を抽出して、別シートに抽出したい
Excel(エクセル)
-
9
エクセルで出勤表から出勤者の名前を出したいのですが。
Excel(エクセル)
-
10
エクセル シフト勤務表から、シフト別に氏名を抽出。
その他(ソフトウェア)
-
11
会員名簿から出席者のみ一覧表の作成
その他(Microsoft Office)
-
12
シフト管理、月間のシフト表を別シートで日ごとの時間別で出勤者の名前を表示したい
Excel(エクセル)
-
13
作業別のシフト表から職員別のシフト表へ反映させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelVBAについて。
-
excelVBAについて。
-
excelVBAについて。
-
エクセルのデータ整理の方法
-
excelVBAについて。
-
excelVBAについて。
-
Excelの警告について
-
excelVBAについて。
-
エクセルで図形を含む複数のブ...
-
評価のエクセルを作りたいです。
-
excelVBAについて。
-
excelVBAについて。
-
excelVBAについて。
-
excelVBAについて。
-
ieを使わずにサーバーとのやり...
-
エクセルVBA 同じ品名を色分けする
-
エクセルでVLOOKUPの入ったセル...
-
Excelの数式について教えてくだ...
-
条件付き書式に設定する関数を...
-
エクセルで、数字の下4桁の0を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
エクセルの数式バーのフォント...
-
【Excel】日付に連動してプルダ...
-
【再投稿】レイアウトが異なる...
-
Excelについて教えてください ...
-
同率順位の発生しないランキン...
-
エクセルマクロについて教えて...
-
【Excel VBA】 テキストファイ...
-
Excel 標準フォントについて教...
-
Excelの計算で差分を求める場合...
-
Excelの区切り文字について質問...
-
大容量があつかえるソフトを探...
-
エクセルの計算式について(COU...
-
エクセルについて
-
今までは、 「CSVの出力先を選...
-
Excel ショートカットで列、行...
-
8:40までの出勤は全て8:30に...
-
if関数。半角文字や全角文字で...
-
エクセルの関数
-
毎週追加して行くセルの数値を...
おすすめ情報