マクロお詳しい方お願いします。シート1のA列に番号がありB、C列は任意の文字が入力されています。シート2のAからC列に入力欄を設け、番号、数値を入力し、マクロを実行すると、シート1の同じ番号の行にシート2の入力内容を反映できるようにしたいです。入力内容に応じて、加減、行削除、行追加を行いたいです。どのようにすればよいか分からず、教えていただけると助かりますよろしくお願いします。シート1A B C1001 100 1001002 50 501003 30 301004 10 10以下10000行ほどありシート2A B C1002 -50 501004 未入力2001 100 100マクロを実行したらシート2の入力結果をシート1に反映したい。1002はB列が-50、C列が+50なのでシート1のB列が0、C列が1001004はB列とC列未入力なのでシート1の1004の行を削除2001はシート1に存在しないので番号順のところに行挿入し、内容を追加

1件の回答

回答を書く

1029361

2026-03-16 07:35

+ フォロー

素人が組む単純なコードですが、添付図のようなことでよろしければ参考まで。

Shee1、Sheet2共にA列は昇順で並んでいるものとします。

番号の並びがばらばらであるのであれば、昇順に並べ替えての作業を追加して実行する必要があります。

添付図Sheet2のE列は、実行結果を検証しやすいように手動で書込んでいるのでコードとは無関係です。



Sub 加減行削除挿入()

Dim r1 As Long, r2 As Long

Dim myR As Long

With Worksheets(\u0026quot;Sheet1\u0026quot;)

Application.ScreenUpdating = False

myR = 2

For r2 = 2 To Cells(Rows.Count, \u0026quot;A\u0026quot;).End(xlUp).Row

For r1 = myR To .Cells(Rows.Count, \u0026quot;A\u0026quot;).End(xlUp).Row

If Cells(r2, \u0026quot;A\u0026quot;).Value = .Cells(r1, \u0026quot;A\u0026quot;).Value Then

If Cells(r2, \u0026quot;B\u0026quot;).Value = \u0026quot;\u0026quot; And Cells(r2, \u0026quot;C\u0026quot;).Value = \u0026quot;\u0026quot; Then

.Rows(r1).Delete

myR = r1 - 1

Else

.Cells(r1, \u0026quot;B\u0026quot;).Value = .Cells(r1, \u0026quot;B\u0026quot;).Value + Cells(r2, \u0026quot;B\u0026quot;).Value

.Cells(r1, \u0026quot;C\u0026quot;).Value = .Cells(r1, \u0026quot;C\u0026quot;).Value + Cells(r2, \u0026quot;C\u0026quot;).Value

myR = r1 + 1

End If

Exit For

ElseIf Cells(r2, \u0026quot;B\u0026quot;).Value \u0026lt;\u0026gt; \u0026quot;\u0026quot; _

And Cells(2, \u0026quot;C\u0026quot;).Value \u0026lt;\u0026gt; \u0026quot;\u0026quot; _

And Cells(r2, \u0026quot;A\u0026quot;).Value \u0026gt; .Cells(r1, \u0026quot;A\u0026quot;).Value _

And Cells(r2, \u0026quot;A\u0026quot;).Value \u0026lt; .Cells(r1 + 1, \u0026quot;A\u0026quot;).Value Then

.Rows(r1 + 1).Insert Shift:=xlDown

.Range(.Cells(r1 + 1, \u0026quot;A\u0026quot;), .Cells(r1 + 1, \u0026quot;C\u0026quot;)).Value _

= Range(Cells(r2, \u0026quot;A\u0026quot;), Cells(r2, \u0026quot;C\u0026quot;)).Value

myR = r1 + 1

Exit For

ElseIf Cells(r2, \u0026quot;B\u0026quot;).Value \u0026lt;\u0026gt; \u0026quot;\u0026quot; _

And Cells(r2, \u0026quot;C\u0026quot;).Value \u0026lt;\u0026gt; \u0026quot;\u0026quot; _

And r1 = .Cells(Rows.Count, \u0026quot;A\u0026quot;).End(xlUp).Row Then

.Range(.Cells(r1 + 1, \u0026quot;A\u0026quot;), .Cells(r1 + 1, \u0026quot;C\u0026quot;)).Value _

= Range(Cells(r2, \u0026quot;A\u0026quot;), Cells(r2, \u0026quot;C\u0026quot;)).Value

End If

Next r1

Next r2

End With

Application.ScreenUpdating = True

End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有