- Katılım
- 29 Aralık 2013
- Mesajlar
- 218
- Excel Vers. ve Dili
- Office Exel 2016
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub SıfırSil()
Dim ws As Worksheet
Dim lastRow As Long, i As Long, j As Long
Dim allZeros As Boolean
Set ws = ThisWorkbook.Sheets("Sayfa1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = lastRow To 1 Step -1
allZeros = True
For j = 9 To 19 'I'den S'ye sütunları değiştirin
If ws.Cells(i, j).Value <> 0 Then
allZeros = False
Exit For
End If
Next j
If allZeros Then
ws.Rows(i).Delete
End If
Next i
End Sub
Üstad Selamlar,Deneyiniz.
C++:Sub SıfırSil() Dim ws As Worksheet Dim lastRow As Long, i As Long, j As Long Dim allZeros As Boolean Set ws = ThisWorkbook.Sheets("Sayfa1") lastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row For i = lastRow To 1 Step -1 allZeros = True For j = 9 To 19 'I'den S'ye sütunları değiştirin If ws.Cells(i, j).Value <> 0 Then allZeros = False Exit For End If Next j If allZeros Then ws.Rows(i).Delete End If Next i End Sub
Üstad Selamlar,
Öncelikle emeğine sağlık
Kısa tabloda işe yaradı ama yaklaşık 70 bin satırdan oluşan bir datada patladı maalesef, bunu çözebilirmiyiz birde kaç satır silmişiz bunu saydırıp uyarı olarak gösterebilirmiyiz?
Sub SatırSilSayaçlı()
Dim ws As Worksheet
Dim lastRow As Long, i As Long, j As Long
Dim allZeros As Boolean
Dim deletedRowsCount As Long
deletedRowsCount = 0
Set ws = ThisWorkbook.Sheets("Sayfa1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = lastRow To 1 Step -1
allZeros = True
For j = 9 To 19 ' I'den S'ye sütunları değiştirin
If ws.Cells(i, j).Value <> 0 Then
allZeros = False
Exit For
End If
Next j
If allZeros Then
ws.Rows(i).Delete
deletedRowsCount = deletedRowsCount + 1
End If
Next i
MsgBox deletedRowsCount & " satır silindi.", vbInformation, "Silme İşlemi Tamamlandı"
End Sub
Üstad, kod çalıştı fakat 9 dk sürdü işlem, bu kısaltılabilirmi bilemedim.. Ama emeğine sağlık.. teşekkür ettim.C++:Sub SatırSilSayaçlı() Dim ws As Worksheet Dim lastRow As Long, i As Long, j As Long Dim allZeros As Boolean Dim deletedRowsCount As Long deletedRowsCount = 0 Set ws = ThisWorkbook.Sheets("Sayfa1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = lastRow To 1 Step -1 allZeros = True For j = 9 To 19 ' I'den S'ye sütunları değiştirin If ws.Cells(i, j).Value <> 0 Then allZeros = False Exit For End If Next j If allZeros Then ws.Rows(i).Delete deletedRowsCount = deletedRowsCount + 1 End If Next i MsgBox deletedRowsCount & " satır silindi.", vbInformation, "Silme İşlemi Tamamlandı" End Sub
Ekli dosyayı görüntüle 250881
Sub test()
Dim rng, crtRng
With Sheets("Sayfa1")
Set rng = .Range("A1:T" & .Cells(Rows.Count, 1).End(3).Row)
Set crtRng = Range("V1:V2")
crtRng.Cells(2).Formula = "=COUNTIF(I2:S2,""<>0"")=0"
rng.AdvancedFilter 1, crtRng
rng.Offset(1).Delete shift:=xlUp
.ShowAllData
crtRng.ClearContents
End With
End Sub
Sub test()
Dim rng, son&
With Sheets("Sayfa1")
son = .Cells(Rows.Count, 1).End(3).Row
.Range("U1").Value = 1
.Range("U1:U" & son).DataSeries
Set rng = .Range("A1:U" & son)
.Range("V2").Formula = "=COUNTIF(I2:S2,""<>0"")=0"
rng.AdvancedFilter 1, .Range("V1:V2")
rng.Offset(1).ClearContents
.ShowAllData
rng.Sort rng.Cells(17), , , , , , , xlYes
.Range("U:V").ClearContents
End With
End Sub
Sub Sill()
Dim i, ss, sifir As Long
ss = Range("A" & Rows.Count).End(xlUp).Row
Range("U2").FormulaR1C1 = "=SUM(RC[-12]:RC[-2])"
Range("U2").AutoFill Range("U2:U" & ss)
Columns("U:U").Copy
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add2 Key:=Range( _
"U2:U" & ss), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A2:U" & ss)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
sifir = WorksheetFunction.CountIf(Range("U:U"), 0) + 1
Rows("2:" & sifir).Delete Shift:=xlUp
End Sub
Merhabalar,Merhaba,
Şöyle bir alternatif sunabilirim;
Kod:Sub Sill() Dim i, ss, sifir As Long ss = Range("A" & Rows.Count).End(xlUp).Row Range("U2").FormulaR1C1 = "=SUM(RC[-12]:RC[-2])" Range("U2").AutoFill Range("U2:U" & ss) Columns("U:U").Copy Selection.PasteSpecial Paste:=xlPasteValues ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add2 Key:=Range( _ "U2:U" & ss), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sayfa1").Sort .SetRange Range("A2:U" & ss) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With sifir = WorksheetFunction.CountIf(Range("U:U"), 0) + 1 Rows("2:" & sifir).Delete Shift:=xlUp End Sub
Üstad,Sub test() Dim rng, crtRng With Sheets("Sayfa1") Set rng = .Range("A1:T" & .Cells(Rows.Count, 1).End(3).Row) Set crtRng = Range("V1:V2") crtRng.Cells(2).Formula = "=COUNTIF(I2:S2,""<>0"")=0" rng.AdvancedFilter 1, crtRng rng.Offset(1).Delete shift:=xlUp .ShowAllData crtRng.ClearContents End With End Sub
Merhabalar,
Bu kod zinciri "400" başlığında hata döndürdü bende..
Sub Sill()
Dim i, ss, sifir As Long
ss = Range("A" & Rows.Count).End(xlUp).Row
Range("v2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Range("U2").FormulaR1C1 = "=SUM(RC[-12]:RC[-2])"
Range("U2:V2").AutoFill Range("U2:V" & ss)
Columns("U:V").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add2 Key:=Range( _
"U2:U" & ss), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A2:V" & ss)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
sifir = WorksheetFunction.CountIf(Range("U:U"), 0) + 1
Rows("2:" & sifir).Delete Shift:=xlUp
ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add2 Key:=Range( _
"V2:V" & ss), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sayfa1").Sort
.SetRange Range("A2:V" & ss)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("U:V").ClearContents
MsgBox sifir - 1 & " Adet Satır Silindi", vbInformation
End Sub
Sub Sil()
Dim arr As Variant
Dim i As Long
Dim j As Long
Dim k As Integer
Dim drm As Boolean
Dim rng As Range
Dim adt As Long
Application.ScreenUpdating = False
k = Range("A1").End(xlToRight).Column + 1
Cells(1, k) = "x"
Set rng = Range("A1").CurrentRegion
rng.Columns(rng.Columns.Count).FormulaR1C1 = "=SUM(RC[-12]:RC[-2])>0"
rng(1, rng.Columns.Count) = True
rng.Sort Key1:=rng.Columns(rng.Columns.Count), order1:=xlDescending
i = 1
Do
i = i + 1
Loop Until i = rng.Rows.Count Or rng(i, k) = False
adt = rng.Rows.Count - i + 1
rng.Rows(i & ":" & rng.Rows.Count).ClearContents
rng.Columns(rng.Columns.Count).ClearContents
MsgBox adt & " Adet Kayıt Silinmiştir...."
Application.ScreenUpdating = True
End Sub
Üstad teşekkürler fakat kod hata veriyorMerhaba,
Ben de bir şeyler karalamıştım.
Kod:Sub Sil() Dim arr As Variant Dim i As Long Dim j As Long Dim k As Integer Dim drm As Boolean Dim rng As Range Dim adt As Long Application.ScreenUpdating = False k = Range("A1").End(xlToRight).Column + 1 Cells(1, k) = "x" Set rng = Range("A1").CurrentRegion rng.Columns(rng.Columns.Count).FormulaR1C1 = "=SUM(RC[-12]:RC[-2])>0" rng(1, rng.Columns.Count) = True rng.Sort Key1:=rng.Columns(rng.Columns.Count), order1:=xlDescending i = 1 Do i = i + 1 Loop Until i = rng.Rows.Count Or rng(i, k) = False adt = rng.Rows.Count - i + 1 rng.Rows(i & ":" & rng.Rows.Count).ClearContents rng.Columns(rng.Columns.Count).ClearContents MsgBox adt & " Adet Kayıt Silinmiştir...." Application.ScreenUpdating = True End Sub

Option Explicit
Sub Fast_Delete_Row()
Dim X As Long, Y As Integer, My_Data As Variant
Dim Zero_Count As Long, Delete_Data_Count As Long
Dim No As Long, Process_Time As Double
Process_Time = Timer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
My_Data = Range("A2:T" & Cells(Rows.Count, 1).End(3).Row).Value
ReDim My_List(1 To UBound(My_Data, 1), 1 To UBound(My_Data, 2))
For X = LBound(My_Data) To UBound(My_Data)
Zero_Count = 0
For Y = 9 To 19
If My_Data(X, Y) = 0 Then Zero_Count = Zero_Count + 1
Next
If Zero_Count <> 11 Then
No = No + 1
For Y = 1 To UBound(My_Data, 2)
My_List(No, Y) = My_Data(X, Y)
Next
Else
Delete_Data_Count = Delete_Data_Count + 1
End If
Next
With Range("A2")
.Resize(Rows.Count - 1, UBound(My_Data, 2)).ClearContents
.Resize(No, UBound(My_Data, 2)) = My_List
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & _
Format(Delete_Data_Count, "#,##0") & " adet veri silinmiştir." & vbCrLf & vbCrLf & _
"İşlem süresi ; " & Format(Timer - Process_Time, "0.00") & " Saniye", vbInformation
End Sub
Üstad,End Sub