- Katılım
- 30 Aralık 2013
- Mesajlar
- 9
- Excel Vers. ve Dili
- Ofis 2007 Tr
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Private Sub CommandButton1_Click()
Dim i As Long
Dim j As Integer
Dim r As Long
Dim birim As Range
Dim unvan As Range
Application.ScreenUpdating = False
r = Sheets("Data").Cells(Rows.Count, "C").End(3).Row
Set birim = Sheets("Data").Range("C2:C" & r)
Set unvan = Sheets("Data").Range("B2:B" & r)
For i = 2 To Cells(Rows.Count, "A").End(3).Row
Cells(i, "B") = Evaluate("=COUNTIF(Data!" & birim.Address & ",""" & Cells(i, "A") & """)")
j = 3
Do Until Cells(1, j) = ""
Cells(i, j) = Evaluate("=SUMPRODUCT((Data!" & birim.Address & "=""" & Cells(i, "A") & """)*(Data!" & unvan.Address & "=""" & Cells(1, j) & """))")
j = j + 1
Loop
Next i
Application.ScreenUpdating = True
End Sub
Merhaba,
Aşağıdaki kodları "Kadro" sayfasının kod bölümüne kopyalayıp deneyiniz.
Kod:Private Sub CommandButton1_Click() Dim i As Long Dim j As Integer Dim r As Long Dim birim As Range Dim unvan As Range Application.ScreenUpdating = False r = Sheets("Data").Cells(Rows.Count, "C").End(3).Row Set birim = Sheets("Data").Range("C2:C" & r) Set unvan = Sheets("Data").Range("B2:B" & r) For i = 2 To Cells(Rows.Count, "A").End(3).Row Cells(i, "B") = Evaluate("=COUNTIF(Data!" & birim.Address & ",""" & Cells(i, "A") & """)") j = 3 Do Until Cells(1, j) = "" Cells(i, j) = Evaluate("=SUMPRODUCT((Data!" & birim.Address & "=""" & Cells(i, "A") & """)*(Data!" & unvan.Address & "=""" & Cells(1, j) & """))") j = j + 1 Loop Next i Application.ScreenUpdating = True End Sub
Açıklamanızdan hiç bir şey anlamadım.Hocam Cevabınız için teşekkürler.
Benim öncelikli talebim. Tekrar eden birim ve Ünvanları tekli olarak satır - sütuna aldırmak
Merhaba Arkadaşım,
Acaba bu dosyadaki gibi mi istemiştiniz?
Necdet Hocam, belki arkadaş bunu demek istemiştir. Hazırlanan örnek daha belirgin olsa daha kolay olacaktı. Olasılıklar peşindeyiz.
Yani aradığınız bu dosya değil mi?
Böyle düşünmenize üzüldüm.. Dosya içerisindeki açıklamalarda açıklayıcı anlattığımı zannediyorum.. Yanlış anlaşıldığı için özür dilerim.. Yıllardır formum Altın Üyesi, takipçisi olarak, Kimseyi kırmak üzmek veya dalga geçmek asla aklımdan geçmez..Dalga geçtiğini sanıyorum artık ben :![]()
Teşekkürler Korhan bey tam istediğim bu... Sağ olun...Alternatif olsun..
Korhan beyden ben neyi farklı yaptım?
Sonuç olarak aynı.
Public Sub PivotGibi()
Dim arrOku As Variant, _
arrLst As Variant, _
arrRow As Variant, _
arrCol As Variant, _
rngRow As Range, _
rngCol As Range, _
collRow As New Collection, _
collCol As New Collection, _
i As Long, _
j As Long, _
k As Integer, _
x As Long, _
hdfRng As Range
Liste.UsedRange.ClearContents
On Error Resume Next
Set rngRow = Application.InputBox("Satırda Listelenecek Sütun Başlığını Seçiniz", "Satırdaki Veri Başlığı", Range("E1").Address, Type:=8)
On Error GoTo 0
If rngRow Is Nothing Then Exit Sub
On Error Resume Next
Set rngCol = Application.InputBox("Sütun Başlıkları Olacak Hücre?", "Sütun Başlıkları", Range("D1").Address, Type:=8)
On Error GoTo 0
If rngCol Is Nothing Then Exit Sub
arrOku = Veri.Range("A1").CurrentRegion.Value
For i = 2 To UBound(arrOku, 1)
On Error Resume Next
collRow.Add arrOku(i, rngRow.Column), arrOku(i, rngRow.Column)
collCol.Add arrOku(i, rngCol.Column), arrOku(i, rngCol.Column)
On Error GoTo 0
Next i
ReDim arrLst(1 To collRow.Count + 1, 1 To collCol.Count + 1)
'Başlıkları aktarılır
For i = 1 To collCol.Count
arrLst(1, i + 1) = collCol.Item(i)
Next i
'1. Sütun Değerleri aktarılır
arrLst(1, 1) = rngRow.Value
For i = 1 To collRow.Count
arrLst(i + 1, 1) = collRow.Item(i)
Next i
'veriler Yerleştiriliyor
For i = 2 To UBound(arrOku, 1)
'Kaçıncı Sütuna Yerleştirilecek
For x = 2 To UBound(arrLst, 2)
If arrOku(i, rngCol.Column) = arrLst(1, x) Then
k = x
Exit For
End If
Next x
'Kaçıncı Sütuna Yazılacak
For x = 2 To UBound(arrLst, 1)
If arrOku(i, rngRow.Column) = arrLst(x, 1) Then
j = x
Exit For
End If
Next x
arrLst(j, k) = arrLst(j, k) + 1
Next i
'Veri.Range("H6").CurrentRegion.ClearContents
'Veri.Range("H6").Resize(UBound(arrLst, 1), UBound(arrLst, 2)) = arrLst
With Liste.Range("A1")
.ClearContents
.Resize(UBound(arrLst, 1), UBound(arrLst, 2)) = arrLst
End With
Liste.Select
End Sub