2016-07-12 3 views
1

マクロに問題があります。特定のテキストを見つけてそれより上の3行を削除する

特定のテキストを1行に配置し、その上に3行を削除する手助けが必要です。 これは私が使用してきたもので、動作しません。 Image of: What I need deleted and the required end result. Also the Macros that I'm using

Sub Delete_Rows() 

Dim x 
For x = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row To ActiveCell.Row Step -1 
    If Cells(x, 1) = "TOT" Then 
     Cells(x, 1).EntireRow.Delete  
     Cells(x - 1, 1).EntireRow.Delete 
     Cells(x - 2, 1).EntireRow.Delete 
     Cells(x - 3, 1).EntireRow.Delete 
End If 

End Sub 

私も、この共通の問題に対する他の解決策をオンラインで周りを見回してきましたが、何も私のために働いていません。このマクロをExcelワークブックのどのページでも使用できるようにする必要があります。

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

+0

こんにちはバーニーを助けるべきである、あなたは素晴らしいです!これは魅力のように機能し、私のような初心者が何が起こっているのかを理解することは簡単です。ありがとう! –

答えて

0

私が正しく理解していれば、下の編集は

Sub Delete_Rows() 

Dim xRow As Integer 
Dim strSearch As String 

strSearch = "TOT" 
' Assuming Total is in column C as your picture shows, but you can configure to search anywhere 

xRow = Range("C" & Rows.Count).End(xlUp).Row 
Range("$C1:C" & xRow).Select 

Selection.Find(What:=strSearch, After:=ActiveCell, LookIn:=xlFormulas, _ 
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
MatchCase:=False, SearchFormat:=False).Select 

Range(ActiveCell.Row & ":" & ActiveCell.Offset(-3, 0).Row).Select 
Selection.Delete Shift:=xlUp 

End Sub 
+0

ちょっと、これはあなたのために働く場合、私は尋ねることが嫌いだが、+1することができます。ありがとう;) –

1

なぜループを作るのですか?なぜ物事を自動で選ぶだけではないのですか?

Sub Delete_Rows() 
    Const WordToLook = "TOT" 
    Dim RowWord As Long 
    RowWord = Columns(3).Find(WordToLook, LookAt:=xlWhole).Row 
    Rows(RowWord - 3 & ":" & RowWord - 1).Delete 
End Sub 

+0

努力をいただきありがとうございます。ダミーと呼ばれることに本当に感謝しないでください。 –

+1

ああ笑、私はあなたを怒らせることを意味しませんでした!私は「ダミーデータ」を表すために「ダミー」を使用する傾向があります。これは、シートにデータがありますが、あなたのためではありません。 – Sgdva

+0

ありがとうございます。そうです、混乱するかもしれません。上記のおかげで、ありがとう。 –

0

これはどこでもシート内の "TOT" を見つけて、その上に3行を削除します。

Sub Delete() 
Dim find As String: find = "TOT" 
Dim rng As Range 

Set rng = Sheets("Sheet1").Cells.find(What:=find, After:=Sheets("Sheet1").Cells(1, 1), LookIn:=xlValues, Lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True) 

If Not rng Is Nothing Then 
    rng.EntireRow.Delete 
    rng.Offset(-1).EntireRow.Delete 
    rng.Offset(-2).EntireRow.Delete 
    rng.Offset(-3).EntireRow.Delete 
End If 

End Sub 
+0

ありがとう、NuWin! –

+0

あなたの歓迎ですが、これがあなたが探していた解決策であれば、答えとしてマークしてください。 – NuWin

+0

私は実際には、Excelファイル内のすべてのワークシートで動作するためにこれを必要としています。このコードは残念なことにSheet1のみで動作します。 –

関連する問題