DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Public Sub Rapor()
Dim col As Collection
Dim arr As Variant
Dim i As Long
Dim j As Long
Dim k As Integer
Dim kol As Integer
Dim bsl As Variant
Application.ScreenUpdating = False
bsl = Array("Sıra No", "Mağaza Adı", "Bakiye")
Sayfa2.Cells.ClearContents
Set col = New Collection
arr = Sayfa1.Range("B4").CurrentRegion.Value
On Error Resume Next
For i = LBound(arr, 1) + 1 To UBound(arr, 1)
col.Add arr(i, 4), arr(i, 4)
Next i
On Error GoTo 0
For k = 1 To col.Count
kol = (k - 1) * 4 + 1
With Sayfa2.Cells(1, kol)
.Value = col(k)
.Font.Bold = True
.Font.Size = 14
.Font.Color = vbRed
End With
Sayfa2.Cells(2, kol).Resize(1, UBound(bsl) + 1) = bsl
j = 2
For i = 2 To UBound(arr, 1)
If arr(i, 4) = col(k) Then
j = j + 1
Sayfa2.Cells(j, kol).Offset(0, 0) = j - 2
Sayfa2.Cells(j, kol).Offset(0, 1) = arr(i, 2)
Sayfa2.Cells(j, kol).Offset(0, 2) = arr(i, 3)
End If
Next i
Next k
Application.ScreenUpdating = True
MsgBox "Aktarım Tamamlanmıştır....."
End Sub
Tam istediğim gbi hocam emeğinize sağlık. çok harika olmuş.Merhaba,
Ben de alternatif olsun, kullanıcının isteğine göre hazırladım.
Kod:Public Sub Rapor() Dim col As Collection Dim arr As Variant Dim i As Long Dim j As Long Dim k As Integer Dim kol As Integer Dim bsl As Variant Application.ScreenUpdating = False bsl = Array("Sıra No", "Mağaza Adı", "Bakiye") Sayfa2.Cells.ClearContents Set col = New Collection arr = Sayfa1.Range("B4").CurrentRegion.Value On Error Resume Next For i = LBound(arr, 1) + 1 To UBound(arr, 1) col.Add arr(i, 4), arr(i, 4) Next i On Error GoTo 0 For k = 1 To col.Count kol = (k - 1) * 4 + 1 With Sayfa2.Cells(1, kol) .Value = col(k) .Font.Bold = True .Font.Size = 14 .Font.Color = vbRed End With Sayfa2.Cells(2, kol).Resize(1, UBound(bsl) + 1) = bsl j = 2 For i = 2 To UBound(arr, 1) If arr(i, 4) = col(k) Then j = j + 1 Sayfa2.Cells(j, kol).Offset(0, 0) = j - 2 Sayfa2.Cells(j, kol).Offset(0, 1) = arr(i, 2) Sayfa2.Cells(j, kol).Offset(0, 2) = arr(i, 3) End If Next i Next k Application.ScreenUpdating = True MsgBox "Aktarım Tamamlanmıştır....." End Sub
Tam istediğim gbi hocam emeğinize sağlık. çok harika olmuş.
Teşekkürler Hocam ama patronlar hep alıştığı- istediği formatta rapor sunulmasını isterler.Ben bir pivot hazırladım. Belki kullanmak istersiniz.
Aynen Hocam mesela 0 olan bakiyeleri görmek istemiyorAnladım, patronları ikna etmek zordur, patron hep haklıdır, bilirim![]()
Public Sub Rapor()
Dim col As Collection
Dim arr As Variant
Dim i As Long
Dim j As Long
Dim k As Integer
Dim kol As Integer
Dim bsl As Variant
Application.ScreenUpdating = False
bsl = Array("Sıra No", "Mağaza Adı", "Bakiye")
Sayfa2.Cells.ClearContents
Set col = New Collection
arr = Sayfa1.Range("B4").CurrentRegion.Value
On Error Resume Next
For i = LBound(arr, 1) + 1 To UBound(arr, 1)
col.Add arr(i, 4), arr(i, 4)
Next i
On Error GoTo 0
For k = 1 To col.Count
kol = (k - 1) * 4 + 1
With Sayfa2.Cells(1, kol)
.Value = col(k)
.Font.Bold = True
.Font.Size = 14
.Font.Color = vbRed
End With
Sayfa2.Cells(2, kol).Resize(1, UBound(bsl) + 1) = bsl
j = 2
For i = 2 To UBound(arr, 1)
If arr(i, 4) = col(k) Then
If arr(i, 3) > 0 Then
j = j + 1
Sayfa2.Cells(j, kol).Offset(0, 0) = j - 2
Sayfa2.Cells(j, kol).Offset(0, 1) = arr(i, 2)
Sayfa2.Cells(j, kol).Offset(0, 2) = arr(i, 3)
End If
End If
Next i
Next k
Application.ScreenUpdating = True
MsgBox "Aktarım Tamamlanmıştır....."
End Sub
Necdet hocam eyw patron gıkını çıkaramadı ama şapka çıkardı vallaMerhaba,
Deneyiniz.
Kod:Public Sub Rapor() Dim col As Collection Dim arr As Variant Dim i As Long Dim j As Long Dim k As Integer Dim kol As Integer Dim bsl As Variant Application.ScreenUpdating = False bsl = Array("Sıra No", "Mağaza Adı", "Bakiye") Sayfa2.Cells.ClearContents Set col = New Collection arr = Sayfa1.Range("B4").CurrentRegion.Value On Error Resume Next For i = LBound(arr, 1) + 1 To UBound(arr, 1) col.Add arr(i, 4), arr(i, 4) Next i On Error GoTo 0 For k = 1 To col.Count kol = (k - 1) * 4 + 1 With Sayfa2.Cells(1, kol) .Value = col(k) .Font.Bold = True .Font.Size = 14 .Font.Color = vbRed End With Sayfa2.Cells(2, kol).Resize(1, UBound(bsl) + 1) = bsl j = 2 For i = 2 To UBound(arr, 1) If arr(i, 4) = col(k) Then If arr(i, 3) > 0 Then j = j + 1 Sayfa2.Cells(j, kol).Offset(0, 0) = j - 2 Sayfa2.Cells(j, kol).Offset(0, 1) = arr(i, 2) Sayfa2.Cells(j, kol).Offset(0, 2) = arr(i, 3) End If End If Next i Next k Application.ScreenUpdating = True MsgBox "Aktarım Tamamlanmıştır....." End Sub