• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで、別シートへの条件付コピー(入出荷データを在庫データへ))

Excelで別シートへの条件付コピー方法

このQ&Aのポイント
  • Excelで別シートへの条件付コピー(入出荷データを在庫データへ)の方法を教えてください
  • 入力した時点で、入出庫データ(シート名:In_out)の資産番号が一致するものを検索し、資産データ(シート名:Master)の該当する行へ値を反映させたいです
  • Excel2003でのマクロまたは関数を使用して、手作業でのコピペ作業を効率化したいです

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんなイメージかな? 1.データはシート名 In_out に入力して行く 2.シート名 In_out の最終行のみ更新対象とする(途中行のデータを変えても処理しない) 3.シート名 In_out のA列最終セル値をシート名 master のA列から探し、見つかった場合は上書き、見つからない場合は追加する。 Sub Test() Dim r As Range, tr As Range, myRow With Worksheets("master")  Set r = Worksheets("In_out").Range("A65536").End(xlUp)  On Error GoTo ER:  myRow = Application.WorksheetFunction.Match(r.Value, .Columns(1), 0)  Set tr = .Range("A" & myRow)  If MsgBox("マスターシートの " & myRow & "行目に転記します。" & _    vbCrLf & "よろしいですか?", vbExclamation + vbOKCancel, _    "データ修正") <> vbOK Then Exit Sub  r.Offset(0, 1).Resize(1, 4).Copy _       Destination:=tr.Offset(0, 1).Resize(1, 4) End With  Exit Sub ER:  If MsgBox("新規データですのでマスターシートに追加しますか?", _      vbQuestion + vbYesNo, "データ追加") <> vbYes Then Exit Sub  Set tr = Worksheets("master").Range("A65536").End(xlUp).Offset(1, 0)  r.Resize(1, 5).Copy Destination:=tr.Resize(1, 5) End Sub あまりスマートじゃないけど。

Yepes
質問者

お礼

ご返答ありがとうございます。結果的に以下のシートモジュールでできました。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim tSh As Worksheet Dim fRng As Range Dim fR As Range With Target If .Cells.Count > 1 Then Exit Sub If Intersect(.Cells, Range("D2:D65536")) Is Nothing Then Exit Sub Set tSh = Worksheets("master") With tSh Set fRng = .Range("A2", .Range("A65536").End(xlUp)) End With Set fR = fRng.Find(.Offset(, -3).Value, , xlFormulas, xlWhole) If fR Is Nothing Then MsgBox "該当番号が見つかりません。" Exit Sub End If If fR.Offset(, 1).Value2 > .Offset(, -2).Value2 Then MsgBox "最新データでは有りません。" Exit Sub End If fR(1, 2).Resize(, 3).Value = .Offset(, -2).Resize(, 3).Value End With End Sub

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

例では資産番号がダブってる(001)けど、ユニークじゃないと特定出来ないですね。 「資産シート」データを選択し、データ-フォームでフォームを開いて検索条件で資産番号を検索して直接「資産シート」に入力するのは?

Yepes
質問者

お礼

ご返答ありがとうございます。 >資産番号がダブってる(001)けど、ユニークじゃないと ご指摘の通りですが、今のところ、 in_outは重複OKです (日付とセットで、ユニークにしています) master はユニークです in_out:Master = n:1 です

関連するQ&A