- Katılım
- 3 Temmuz 2009
- Mesajlar
- 81
- Excel Vers. ve Dili
- 2010 pro plus türkçe
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Option Explicit
Sub Birlestir()
Dim S1 As Worksheet, S2 As Worksheet, Dizi As Object
Dim Kriter As String, Veri As Variant, Zaman As Double
Dim X As Long, Son As Long, Say As Long, Y As Byte
Zaman = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set S1 = Sheets("Sayfa1")
Set S2 = Sheets("Rapor")
Set Dizi = CreateObject("Scripting.Dictionary")
Son = S1.ListObjects("Tablo1").Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Veri = S1.Range("A1:H" & Son)
ReDim Liste(1 To UBound(Veri, 1), 1 To 8)
For X = 1 To UBound(Veri, 1)
Kriter = Veri(X, 1) & "#" & Veri(X, 2) & "#" & Veri(X, 3) & "#" & Veri(X, 4)
If Not Dizi.Exists(Kriter) Then
Say = Say + 1
Dizi.Add Kriter, Say
For Y = 1 To 8
Liste(Say, Y) = Veri(X, Y)
Next
Else
If Liste(Dizi.Item(Kriter), 5) = "" Then
Liste(Dizi.Item(Kriter), 5) = Veri(X, 5)
Else
If Liste(Dizi.Item(Kriter), 7) = "" Then
Liste(Dizi.Item(Kriter), 7) = Veri(X, 5)
End If
End If
If Liste(Dizi.Item(Kriter), 7) = "" Then
Liste(Dizi.Item(Kriter), 7) = Veri(X, 7)
Else
If Liste(Dizi.Item(Kriter), 5) = "" Then
Liste(Dizi.Item(Kriter), 5) = Veri(X, 7)
End If
End If
If Liste(Dizi.Item(Kriter), 6) = "" Then
Liste(Dizi.Item(Kriter), 6) = Veri(X, 6)
Else
If Liste(Dizi.Item(Kriter), 8) = "" Then
Liste(Dizi.Item(Kriter), 8) = Veri(X, 6)
End If
End If
If Liste(Dizi.Item(Kriter), 8) = "" Then
Liste(Dizi.Item(Kriter), 8) = Veri(X, 8)
Else
If Liste(Dizi.Item(Kriter), 6) = "" Then
Liste(Dizi.Item(Kriter), 6) = Veri(X, 8)
End If
End If
If Liste(Dizi.Item(Kriter), 5) = Liste(Dizi.Item(Kriter), 7) Then Liste(Dizi.Item(Kriter), 7) = ""
If Liste(Dizi.Item(Kriter), 6) = Liste(Dizi.Item(Kriter), 8) Then Liste(Dizi.Item(Kriter), 8) = ""
End If
Next
S2.Range("A:H").Clear
S2.Range("A1").Resize(Say, 8) = Liste
S2.Cells.EntireColumn.AutoFit
Set S1 = Nothing
Set S2 = Nothing
Set Dizi = Nothing
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub