[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一致するものがあれば上書き(更新)なければ追加する方法』(りり)
シート1のA1にIDを入力します
シート1のA列からD列までの5行目からデータを入力します
VBAを使い、シート2のA列にIDと同じ値がある場合は
シート2のA列からD列にシート1の同じIDのデータを上書き、
同じ値がなければシート2の最終行にそれぞれ追加するにはどうしたらいいですか?
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
こんな事なのかな。
Sub Sample() Dim App As Application Dim ws1 As Worksheet, ws2 As Worksheet Dim IDPos1, IDPos2
Set App = Application Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2")
With ws1 IDPos1 = App.Match(.Range("A1"), .Range("A5", .Cells(.Rows.Count, "A").End(xlUp)), 0) End With
If IsNumeric(IDPos1) Then IDPos1 = IDPos1 + 4 IDPos2 = App.Match(ws1.Range("A1"), ws2.Columns("A"), 0)
If IsNumeric(IDPos2) Then '上書き処理 ws2.Cells(IDPos2, "A").Resize(, 4) = ws1.Cells(IDPos1, "A").Resize(, 4).Value Else '追加処理 ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1).Resize(, 4) = _ ws1.Cells(IDPos1, 1).Resize(, 4).Value End If Else MsgBox "Sheet1に" & ws1.Range("A1").Value & "のIDは存在しません" End If End Sub
(半平太) 2023/10/30(月) 09:39:01
いちいちA1セルにIDを入れるのって面倒な気がしないでもないなぁ・・ 狙いのIDを直接右クリックして起動した方が話が早そう。 そうすれば、自シート内の存在確認も必要なくなるし。
ま、どう使うのかはっきり分からないので、確信は持てないけども。
(半平太) 2023/10/30(月) 09:48:25
Sub Sample()
Dim ws1 As Worksheet Dim ID As Variant
Set ws1 = Worksheets("Sheet1") ID = ws1.Range("A1").Value
Dim pos As Long
On Error GoTo ErrTrap With Worksheets("Sheet2") pos = WorksheetFunction.Match(ID, .Range("A:A"), 0) .Cells(pos, "A").Resize(, 4).Value = ws1.Range("A1").Resize(, 4).Value
Exit Sub ErrTrap: pos = .Range("A" & .Rows.Count).End(xlUp).Row + 1 Resume Next End With
End Sub
これだけで良くないっすか
( 'ふ') 2023/10/30(月) 13:10:14
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.