/ /セル= 0の場合、範囲をマスターテーブルにコピーし、マスターテーブルから範囲を削除する-excel、vba、excel-vba

cell = 0の場合、マスターテーブルに範囲をコピーし、マスターテーブルから範囲を削除します - excel、vba、excel-vba

同じ範囲(C25:G34およびC42:N51)のテーブルを持つ10枚のシート(シート1 ...シート10)があります。

ワークシートのソーステーブル

[合計重量]列の値が0より大きい場合、行をコピーする必要があります。コピーされた行は、2つのサマリーテーブルに移動します。

Westrockテーブルへ-> Westrock Summary Table

DNPテーブルへ-> DNPサマリーテーブル

要約表: ウエストロック ウエストロックの概要

要約表: DNP ここに画像の説明を入力

私はMacを使用しているため、PowerQueryはオプションではありません。VBAは初めてです。これは私がこれまでに持っているものです:

Sub ToDNP()

Application.ScreenUpdating = False

Worksheets("Jupiter").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
"Application.CutCopyMode = False

Worksheets("Windsor").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Worksheets("Orlando").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C31").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Worksheets("Woodland").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C41").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Dim rRow As Integer, rCol As Integer
Dim cRow As Integer, cCol As Integer

rCol = 3
rRow = 11
cCol = 14
cRow = 11

For cRow = 11 To 50

If Cells(cCol, cRow).Value = "0" Then
Range(Cells(rCol, rRow), Cells(cCol, cRow)).ClearContents
End If
rRow = rRow + 1

Next cRow

End Sub

これは私にエラーを与えています:

エラー:結合されたセルの一部を変更できません

回答:

回答№1は1

行と列の値が入れ替わっているため、エラーが発生しています。行パラメーターが最初に来て、 次に 列パラメーターがあります。

コードは次のようになります。

If Cells(cRow, cCol).Value = "0" Then
Range(Cells(rRow, rCol), Cells(cRow, cCol)).ClearContents
End If

「To DNP」ワークシートの3行目から14行目までの列11をクリアしようとしています。これには明らかに結合されたセルが含まれています。


回答№2の場合は0

立ち寄る人のために。これは、1つのセルに特定の値が含まれている場合に行の特定の範囲をクリアする簡単なコードです。

For Each cell In Range("C11:N50")
If cell.Value2 = "0" Then
Set cRng = Range("C" & cell.Row & ":" & "O" & cell.Row)
" Or Set clearRng = Range("C" & cell.Row & ":O" & cell.Row)
cRng.Clear
End If
Next