Execl 2010を利用してます。VBAのコードついてご教示お願いします。
sheet管理のセルA5に本日の日付があります。
sheet管理のセルA8から、従業員の名前があります。
sheetシフトに、今月の従業員の勤務時間があります。
sheetシフトのセルC1~AG1には、1/1 1/2 1/3 と日付があります。
sheetシフトのセルB2から従業員の氏名が入力されています。(例えば、セルB13まで等)
sheetシフトのセルC2~AG2には勤務時間が入力されています。(従業員のが13名ならC2~AG13)
やりたいことは、
sheet管理のセルA5の日付と、sheetシフトのセルC1~AGの日付が一致したときに、
sheetシフトの勤務時間(例えば、C2~C13まで)をsheet管理のB8へ転記したいのです。
従業員は月ごとに人数が変わるので、最終列までとしたいのです。
WEBで、Excel 最終列 転記等で検索しましたが、正解にたどり着けません。
sheet管理のセルA5の日付と、sheetシフトのセルC1~AGの日付が一致したときに、⇒これがどのようなコードかわかりません。
丸投げで本当に申し訳ないのですが、コードをご教示していただけないでしょうか?
No.1ベストアンサー
- 回答日時:
補足要求です。
1)sheetシフトのセルC1は、必ず1日の日付が設定されてますか。(1/1,2/1,3/1等)
そうであれば、2日は、C4のセルを参照すれば良いことになります。(C4のセルの日付は確認せずに決定出来ます)
2)sheet管理のA5に本日の日付がありますが、マクロを実行したとき、月がずれている可能性がありますか?
例 マクロ実行時、A5=2/3で、sheetシフトのC1が1/1のケース
3)sheet管理の従業員の並びとsheetシフトの従業員の並びは一致していますか。
それとも、一致していませんか。又、sheet管理の従業員の人数とsheetシフトの従業員の人数は必ず一致している
と考えてよいですか。
例
sheet管理
A列
8行 山田太郎
9行 山田花子
10行 小田切ジョー
sheetシフト
B列
2行 小田切ジョー
3行 山田花子
のようなケースはありますか。
>>1)sheetシフトのセルC1は、必ず1日の日付が設定されてますか。
sheetシフトのセルC1⇒1/1
sheetシフトのセルD1⇒1/2
sheetシフトのセルE1⇒1/3
sheetシフトのセルF1⇒1/4
・
・
・
sheetシフトのセルAG1⇒1/31
という設定です。
>>2)sheet管理のA5に本日の日付がありますが、マクロを実行したとき、月がずれている可能性がありますか?
例 マクロ実行時、A5=2/3で、sheetシフトのC1が1/1のケース
このケースはありえません。月ごとにシートを作成しています。
3)sheet管理の従業員の並びとsheetシフトの従業員の並びは一致していますか。
一致してます。
ただ、欲を言えば不一致でも参照できるようにしたいのですが、
私にはとても無理なのであきらめました。
回答ありがとうございます。
No.2
- 回答日時:
sheetシフトのC1は1日(ついたち)の日付が設定されている前提です。
(2月になったらC1に2/3が設定されていることは想定していません。2月は2/1の日付が設定されているものとします)
sheet管理の従業員の並びとsheetシフトの従業員の並びが一致しなくても良いようにしてあります。
(名前で紐づけますので、名前は完全に一致させてください。山田ハナコと山田ハナコは不一致の扱いとなります)
以下のようになります。標準モジュールへ登録してください。
--------------------------------------------
Option Explicit
Public Sub 勤務時間転記()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim dicT As Object '連想配列
Dim row1 As Long
Dim row2 As Long
Dim MaxRow1 As Long
Dim MaxRow2 As Long
Dim colno As Long 'sheetシフトの列番号
Dim name As String
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh1 = Worksheets("管理")
Set sh2 = Worksheets("シフト")
MaxRow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'sheet管理 最終行を求める
MaxRow2 = sh2.Cells(Rows.Count, "B").End(xlUp).Row 'sheetシフト 最終行を求める
'sheet管理の従業員名と行番号を記憶する
For row1 = 8 To MaxRow1
dicT(sh1.Cells(row1, "A").Value) = row1
Next
'sheetシフトの列番号を取得
colno = Day(sh1.Range("A5").Value) + 2
'sheetシフトの勤務時間を転記
For row2 = 2 To MaxRow2
name = sh2.Cells(row2, "B").Value
If dicT.exists(name) = True Then
'該当氏名のB列へ転記
row1 = dicT(name)
sh1.Cells(row1, "B").Value = sh2.Cells(row2, colno).Value
Else
MsgBox (name & "は管理に存在しません")
End If
Next
MsgBox ("転記完了")
End Sub
------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) VBAにてエクセルをpdf化する方法 1 2023/03/10 16:20
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) こんなことできますか?例えば、sheetに貼り付けた図形のタイトルを、セルA1の文字で表示する。 5 2022/04/22 15:25
- Visual Basic(VBA) VBA Userform転記のみ編集可 1 2023/06/29 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PageBreak プロパティを設定で...
-
(VBA)指定したセルがアクティブ...
-
セル入力文字が、「右のセルに...
-
パワポの複数ページにまたがる...
-
Word2016でExcelデータを差込し...
-
エクセル、ページをまたがった...
-
ワードの表の行が広がってしまう
-
ワードの文章囲み枠(?)を消...
-
【Excel VBA】CSV取込時、数字...
-
パワーポイントの表
-
ワード、上下中央揃えにしたい...
-
エクセルで知らない間に行がず...
-
wordで罫線が引けない・・・
-
Wordで、表のセルが変なところ...
-
エクセル2010で、結合したセル...
-
ワードで勝手に点線ラインがでる
-
ワード:罫線を引くと改ページ...
-
ワードで表を作ってセル内で改...
-
エクセルでセルの中の文字が削...
-
表と票の違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 図形の選択法は?
-
PageBreak プロパティを設定で...
-
(VBA)指定したセルがアクティブ...
-
VBA 選択したセルが空白であっ...
-
TextBoxにExcelの背景色を取得
-
顧客ごとに違う点検案内を作成...
-
VBAでセルの選択範囲を指定する...
-
マクロについて教えてください
-
【Excel VBA】Caseマクロを簡潔...
-
セル入力文字が、「右のセルに...
-
エクセル、ページをまたがった...
-
パワポの複数ページにまたがる...
-
Word2016でExcelデータを差込し...
-
ワードの文章囲み枠(?)を消...
-
【Excel VBA】CSV取込時、数字...
-
ワードの表の行が広がってしまう
-
エクセルでセルの中の文字が削...
-
あるセルに色を付けた時、別の...
-
エクセルで知らない間に行がず...
-
wordで罫線が引けない・・・
おすすめ情報
>>1)sheetシフトのセルC1は、必ず1日の日付が設定されてますか。
sheetシフトのセルC1⇒1/1
sheetシフトのセルD1⇒1/2
sheetシフトのセルE1⇒1/3
sheetシフトのセルF1⇒1/4
・
・
・
sheetシフトのセルAG1⇒1/31
という設定です。
>>2)sheet管理のA5に本日の日付がありますが、マクロを実行したとき、月がずれている可能性がありますか?
例 マクロ実行時、A5=2/3で、sheetシフトのC1が1/1のケース
このケースはありえません。月ごとにシートを作成しています。
3)sheet管理の従業員の並びとsheetシフトの従業員の並びは一致していますか。
一致してます。
ただ、欲を言えば不一致でも参照できるようにしたいのですが、
私にはとても無理なのであきらめました。
回答ありがとうございます。