No.5ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub 日付設定()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim dicT As Object
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim maxcol2 As Long
Dim key As Variant
Dim row1 As Long
Dim row2 As Long
Dim col2 As Long
Set dicT = CreateObject("Scripting.Dictionary")
Set sh1 = worksheets("集約データ")
Set sh2 = worksheets("公休日105出社一覧")
maxrow1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row 'A列最終行を求める
maxrow2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row 'A列最終行を求める
'全職員の行番号を記憶する
For row2 = 2 To maxrow2
key = sh2.Cells(row2, 1).Value
dicT(key) = row2
Next
'Sheet1を全行分処理する
For row1 = 2 To maxrow1
key = sh1.Cells(row1, 1).Value
If dicT.exists(key) = False Then
sh1.Select
sh1.Cells(row1, 1).Select
MsgBox ("職員番号:" & key & "は公休日105出社一覧に存在しません")
Exit Sub
End If
row2 = dicT(key)
maxcol2 = sh2.Cells(row2, Columns.Count).End(xlToLeft).Column '該当行行の最終列を求める
col2 = maxcol2 + 1
If col2 < 5 Then col2 = 5
sh2.Cells(row2, col2).Value = sh1.Cells(row1, 4).Value
Next
MsgBox ("完了")
End Sub
ありがとうございます。こういったのが作れるのは素晴らしい技術ですね。
他の方が仰っている通り、少しスタイルが変わっても使える知識があるかと言えばまだまだ力不足のところがあります。できる限り1行ずつ理解して応用できるようにしたいと思います。その中でまた質問させていただくかもしれません。ありがとうございました。
No.7
- 回答日時:
No.6様、心配されてのご意見ありがとうございます。
お恥ずかしいですが私にはそのような立派な理由はなく、ただ単にExcelを弄っていられない時間帯であっただけなのです。
⇒確かに最初は少々知恵袋の方でやり取りはしてましたがベテラン回答者様も既に参加されていらっしゃったので、30分(知恵袋でやり取りしている間に)程で回答はついてしまって締め切られるだろうからとこちらは見ていませんでした。
>なにかエラーが出た時に修正できます?
その時にも質問を立てて回答を得るってのは他のサイトでもありがちでしょう。
利用規約違反にもありませんし。
No.6
- 回答日時:
多分、皆さんがやり方を教えてくれず、質問ばかりしてくるのは
「なんで内容は同じの2つのファイルを作らなければいけないのか?」
「運用上無駄ではないか?」
ということだという事をご理解いただきたいと思います。
例えばもし、右のデータを社員別に管理するのであれば、左のデータは
そのままで、オートフィルタで社員別に表示すればいいと思います。
右のような内容ではなく、1社員別にデータを作るのであれば
該当行を全て取り出してくる関数を使う事で解決できます。
どうしても最初の質問にある転記にこだわるのなら、マクロですが・・・
なにかエラーが出た時に修正できます?
ありがとうございます。確かにおっしゃる通りですなのですが、前任者から業務を引き継ぎ、そのまま作業をしようとすると、このような感じになってしまいます。もっと経験を積んで私の意見が通るようになればもっと効率の良いシートにしていきたいと思います。
No.4
- 回答日時:
追加で。
・左の表の人すべてを右に転記するのですか?(該当月に当たってれば)
・転記する場合は仮に既に右に存在している人でも左に古い日付があったら、右の日付欄は並び替えるのでしょうか?
ありがとうございます。
右の表のD列までは事前に作っておこうと思います。
その上で左の表で該当する人が出てきたら転記するような感じを考えています。左の表の日付は古いものから並ぶ予定なので右に転記してから並び変える必要はないと思います。よろしくお願いします。
No.3
- 回答日時:
左側のシートは毎月作成しているけど、そんなに月内に何度も右のシートに転記する必要があるのですか?
逆にお聞きしますけど、データを追加するのではなく作成していっている左のシートのデータを改めて右のシートを全て書き直す事は出来ないのですか?
そうすればどこまで処理したとか気にしなくて済むかと。
と思いきや左のシートは右に転記したらデータを削除するの?
仮に4月であれば4月中は残しておかないものなの?
それとも単に添付したデータが左右で噛み合ってないだけ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelについて 1 2023/03/06 10:26
- Excel(エクセル) 添付写真上のExcelシートのように時間と曜日ごとに担当者が振り分けられているシートがあります。 例 1 2023/03/08 13:02
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) evcel VBAについて 2 2022/08/02 21:37
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Excel(エクセル) VBAで「クエリと接続」の画面を出せますか? 2 2022/10/24 13:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA セルの値と同じ名前のシー...
-
Excelの中央値の複数条件について
-
VBAのoffsetの動き方について教...
-
エクセルで入力シートから別シ...
-
IF, ISNUMBER, INDIRECTの組み...
-
指定した日付の範囲内でデータ...
-
EXCEL VBA 一致しないデータの...
-
Excelファイルサイズが大容量に...
-
エクセル マクロを使って日々...
-
ExcelVBAで、指定したシートに...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル自動の年月
-
エクセルVBAで 指定のデーター...
-
エクセルで、他シートから統計...
-
Excel 複数のシートからグラフ...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
エクセルでグラフタイトルが折...
-
Excelで行ごとコピー、同じ行を...
-
エクセルにおける、グラフの指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
Excel 複数のシートからグラフ...
-
Excelの中央値の複数条件について
-
VBA セルの値と同じ名前のシー...
-
ExcelVBAで、指定したシートに...
-
Excel ハイパーリンク先のセル...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルのワークシートが重く...
-
エクセル シフト勤務表から、...
-
VBAでシート名をセルから取得し...
-
エクセルで入力→日付を自動判別...
-
エクセルVBA:表の内容を担当者...
-
質問:特定文字列から空白行ま...
-
エクセル マクロを使って日々...
-
VBAのoffsetの動き方について教...
-
エクセル自動の年月
-
エクセル:複数シートのデータ...
-
ピボットテーブルから抽出デー...
-
エクセルについて質問です 日付...
-
Excelの選択肢をポップアップリ...
おすすめ情報