Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7 / 12950 ツリー ←次へ | 前へ→

【78872】2シートの一致照合と計算、一致項目の削除のマクロが組みたいです。 まるばつ 17/2/17(金) 18:36 質問[未読]

【78876】Re:2シートの一致照合と計算、一致項目の... β 17/2/17(金) 19:47 発言[未読]
【78878】Re:2シートの一致照合と計算、一致項目の... まるばつ 17/2/18(土) 10:25 お礼[未読]

【78876】Re:2シートの一致照合と計算、一致項目...
発言  β  - 17/2/17(金) 19:47 -

引用なし
パスワード
   ▼まるばつ さん:

改訂版です。

Sub Sample()
  Dim sh1 As Worksheet
  Dim sh2 As Worksheet
  Dim sh3 As Worksheet
  Dim i As Long
  Dim mx As Long
  Dim k As String
  Dim z As Variant
  Dim n1 As Long
  Dim n2 As Long
  Dim r As Range
  
  Application.ScreenUpdating = False
  
  Set sh1 = Sheets("Sheet1")
  Set sh2 = Sheets("Sheet2")
  Set sh3 = Sheets("Sheet3")
  
  mx = sh1.Range("A" & Rows.Count).End(xlUp).Row 'Sheet1 の最終セルの行番号
  
  For i = 2 To mx '2行目から最終行までを繰り返し処理
    k = sh1.Cells(i, "C").Value   'その行のC列の値
    If Not IsEmpty(k) Then '空白の値でなければ
      Set r = sh2.Range("C1", sh2.Range("C" & Rows.Count).End(xlUp))
      z = Application.Match(k, r, 0)   'その値がSHeet2のC列にあるかどうか
      If IsNumeric(z) Then  'あった
        sh1.Cells(i, "D").Value = sh1.Cells(i, "D").Value - sh2.Cells(z, "D").Value   'D列のセル Sheet1-Sheet2
        sh1.Cells(i, "E").Value = sh1.Cells(i, "E").Value - sh2.Cells(z, "E").Value   'E列のセル Sheet1-Sheet2
        sh1.Rows(i).Copy sh3.Range("A" & Rows.Count).End(xlUp).Offset(1)        'この時点のSheet3の最終行の次の行に追加
        sh1.Rows(i).ClearContents 'Sheet1の該当行をクリア
        sh2.Rows(z).ClearContents 'SHeet2の該当行をクリア
      End If
    End If
  Next
  
End Sub

【78878】Re:2シートの一致照合と計算、一致項目...
お礼  まるばつ  - 17/2/18(土) 10:25 -

引用なし
パスワード
   ▼β 様:

早速のお返事およびプログラミングありがとうございます。
マクロ実行をしてみたところ、見事私の理想通りの動きをしました!

今まで手でしていた作業の大幅な効率化ができると思うと
とてもうれしく思います。

この度はすべて丸投げをしてしまいましたがまず、このマクロの理解から
VBAを始めてみようと思います。

ありがとうございました!

7 / 12950 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free