あなたはエクセルで古い表から新しい表へ更新するとき、変わらない内容を、新しい表に転記するのが面倒だと思ったことはありませんか?
仕掛商品の製造状況更新や、タスクの進行状況更新など、毎週更新しているリストにコメントを書く時に、古い表と新しい表で内容が変わらない場合、同じコメントをいちいち書き込んだり、転記のためにコピペするのは大変ですよね。
数が多いとコピペする欄を間違えたりもするので、自動的にできたら時短だし、ラクにもなります。
エクセルのマクロを使えば、古い表と新しい表を比べて、変わらないところは自動でコピペできます。
今回は「エクセルのマクロで古い表と新しい表を比較し、変わらない内容を自動的にコピペする方法」を紹介します。
エクセルのマクロで古い表と新しい表を比較し、変わらない内容を自動的にコピペする方法
エクセルのマクロで古い表と新しい表を比較し、変わらない内容を自動的にコピペする方法です。
今回は、下のように古い表から新しい表を比べ、同じ管理番号があったら、そのコメント欄を転記するのを例に紹介します。
準備として、Sheet1に古い表、Sheet2に新しい表を貼付けしておきます。
マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法
1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック
2.「新規作成」をクリック
3.コード入力画面が開く
4.コードを入力
コードを入力します。
古いシートと新しいシートの管理番号を検索し、新しいシートにコメントを転記する、という意味です。
赤枠部のコードです。
Sub ボタン1_Click()
Dim oldSheet As Worksheet
Dim newSheet As Worksheet
Dim oldLastRow As Long
Dim newLastRow As Long
Dim oldCell As Range
Dim newCell As Range
Dim oldComments As String
' シートを設定
Set oldSheet = ThisWorkbook.Sheets("Sheet1")
Set newSheet = ThisWorkbook.Sheets("Sheet2")
' 古いシートと新しいシートの最終行を取得
oldLastRow = oldSheet.Cells(oldSheet.Rows.Count, "A").End(xlUp).Row
newLastRow = newSheet.Cells(newSheet.Rows.Count, "A").End(xlUp).Row
' 古いシートの各管理番号をループ
For Each oldCell In oldSheet.Range("A2:A" & oldLastRow)
oldComments = oldCell.Offset(0, 3).Value ' 古いコメントを取得
' 新しいシートで一致する管理番号を検索
For Each newCell In newSheet.Range("A2:A" & newLastRow)
If oldCell.Value = newCell.Value Then
' コメントを転記
newCell.Offset(0, 3).Value = oldComments
Exit For
End If
Next newCell
Next oldCell
MsgBox "コメントの転記が完了しました。", vbInformation
End Sub
コードを入力したら、コードの入力画面を閉じて下さい。
5.ボタンができた →ボタンをクリック
ボタンができたら、ボタンをクリックします。
6.コメントの転記が完了
「コメントの転記が完了しました」と出ます。
新しい表を見てみると、古い表のコメントが、新しい表のコメント欄に転記されました!
これで、表を見比べて、コメントを1つずつコピペしなくていいので、コメント転記するのが簡単になりますね!
まとめ
エクセルのマクロで古い表と新しい表を比較し、変わらない内容を自動的にコピペする方法のまとめです。
1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック
2.新規作成をクリック
3.コードを入れる画面が出る
4.コードを入力
5.ボタンができた →ボタンをクリック
6.コメントの転記が完了
これで表を比較して転記するのが簡単になります!
コメント