目標を達成するためにコードをマージするのが難しいです。 1つのワークブック内で2枚のシートの間で作業しています。列「A」は、列「C」内に複数の行を有するアイテムを参照する。 "C"には何千ものラベルコードが含まれていますが、シートコード "SheetCode"には52個のラベルコードがあります。私の目標は、アイテムを見て、それが52のラベルコードの1つを持っているかどうかを確認し、そうであれば、そのアイテムとその下のすべての行を列 "A"のラベル番号の次のアイテムまで削除します。私はしたい私のマクロへ:シート「SheetCode」に記載されている任意の値のマクロ:条件に基づいて最初の列のセルに関連付けられた行のグループを削除し、空白の行を削除します。
- 検索列C(A2:A53)
- 見つかった場合は、列Aの関連する人口のセルを参照し、それまでは、以下のすべての行を削除列Aの次に移入されたセルに実行されますが、残りの列 "C"をさらに検索し続けます(A2:A53)。
- ループ
私は2枚の画像を投稿しました。 SheetCodeワークシートには値のリストがあります。条件付き書式を適用して、メインスプレッドシート内のセル値に色付けされているようにします。最終的にコードは、列Aの値以下の行をすべて削除する必要があります。この例では、行14-21と29-44が削除されたことが示されます。
これまで私がこれまで持っていたことは次のとおりです。私の問題は回避したいです。
Sub Remove_TBI_AB()
Const TEST_COLUMN As String = "C"
Dim Lastrow As Long
Dim EndRow As Long
Dim i As Long
Application.ScreenUpdating = False
With ActiveSheet
Lastrow = .Cells(.Rows.Count, TEST_COLUMN).End(xlUp).Row
EndRow = Lastrow
For i = Lastrow To 1 Step -1
If .Cells(i, TEST_COLUMN).Value2 Like "161000" Then
'Here I could at continuous "_or" and then in next line add the next code to find, but I have the list and would rather reference the list of values
.Rows(i & ":" & EndRow).Delete
EndRow = i - 1
' Here I need code to delete all cells below the associated value in Column A until the next populated cell.
EndRow = i - 1
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
SheetCode;
メインワークシート
これはほぼ完全に機能します。メインシートの列Cを見ると、いくつかの値のコード値に余分な数字が追加されているか、最後に2つの値があることがわかります。私は最初の6つの数字を保持し、残りを削除する関数を追加する回避策を見つけました(すべてのコードは6つの数字です)。 –
関数は簡単です、ちょうど= LEFT(C2、6)それから私はそれをドラッグしました。しかし、私は列全体をコピーし、値をペーストする必要があります。これをマクロに追加する簡単な方法はありますか? –
@AlexBadilla私はもうテストデータを持っていません(3日前でした)。この変更を試してみますか? 'Application.SumProduct(Application.CountIf(codes、.Value2))'の代わりに 'Application.SumProduct(Application.CountIf(codes、Evaluate(" transpose(Left) "&.Address& 、6)) ")))' –