Sütunda mükerrer verilere karşılık gelen veriyi toplama ve alt mükerrer satırı silme işlemini nasıl yapabilirim şimdiden teşekkür ederim.
Ekli dosyalar
-
41.5 KB Görüntüleme: 42
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub Mukerrerleri_Topla_ve_Temizle()
Dim col As New Collection
Dim rng As Range
Dim i As Integer
Dim iSon As Integer
Dim x As Integer
iSon = Cells(65536, 1).End(xlUp).Row
On Error Resume Next
Application.Calculation = xlCalculationManual
For i = 2 To iSon
col.Add CStr(Cells(i, 1)), CStr(Cells(i, 1))
If Err <> 0 Then
x = x + 1
If x = 1 Then
Set rng = Rows(i)
Else
Set rng = Application.Union(rng, Rows(i))
End If
Err = 0
Else
Cells(i, "D") = Application.WorksheetFunction.SumIf(Range("A2:A" & iSon), Cells(i, 1), Range("D2:D" & iSon))
End If
Next
On Error GoTo 0
If Not rng Is Nothing Then
rng.Delete
End If
Application.Calculation = xlCalculationAutomatic
Set rng = Nothing
End Sub
O zaman, SumIf fonksiyonunu 3 sütuna göre ayrı ayrı hesap edip toplamlarını alacaktık. Bölyece kodumuz da şöyle olacaktı :sn. ferhat hocam, eğer toplanacak sutun birden fazla olsaydı kod nasıl olacaktı, örnekte d sutunu toplanıpor,
bununla birlikte b ve h sutunuda toplanacak olsaydı.
Sub Mukerrerleri_Topla_ve_Temizle()
Dim col As New Collection
Dim rng As Range
Dim i As Integer
Dim iSon As Integer
Dim x As Integer
[COLOR=red] Dim dblTop As Double[/COLOR]
iSon = Cells(65536, 1).End(xlUp).Row
On Error Resume Next
Application.Calculation = xlCalculationManual
For i = 2 To iSon
col.Add CStr(Cells(i, 1)), CStr(Cells(i, 1))
If Err <> 0 Then
x = x + 1
If x = 1 Then
Set rng = Rows(i)
Else
Set rng = Application.Union(rng, Rows(i))
End If
Err = 0
Else
[COLOR=red] With Application.WorksheetFunction
dblTop = .SumIf(Range("A2:A" & iSon), Cells(i, 1), Range("D2:D" & iSon))
dblTop = dblTop + .SumIf(Range("A2:A" & iSon), Cells(i, 1), Range("B2:B" & iSon))
dblTop = dblTop + .SumIf(Range("A2:A" & iSon), Cells(i, 1), Range("H2:H" & iSon))
End With
Cells(i, "D") = dblTop[/COLOR]
End If
Next
On Error GoTo 0
If Not rng Is Nothing Then
rng.Delete
End If
Application.Calculation = xlCalculationAutomatic
Set rng = Nothing
End Sub