Benzer Kayıtların Üstüne Satır Ekle

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista


Arkadaşlar soum şu c sütununda aynı kayıtalr bulundukça üstüne bir satır ekleyecek ve c sütunundaki ilk benzersiz değeri b sütunda eklenen satıra kopyalayacak ve diğer benzersiz kayıtları silecek mümkünmüdür.

örnek dosya eklendi.....
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Güncel yardımlarınız için teşekkürler....
Biraz daha açıklama ekleyeyim amacım tam anlaşılmadığı için soruma cevap gelmedi herhalde;
C Sütununda Ana Başlıklarımız var
Mesala
C2:C7 Aralığında yer alan Kira başlığımız için;
2. satırın üstüne yeni satır eklenecek ve verilerin olduğu aralık otomatik olarak c3:c8 olacak.
C3 teki değer b2 olacak ve C3:C8 içeriği temizlenecek.

bu işlem c sütununda her Anabaşlık için uygulanacak.

Daha sonra D sütununda yer alan Alt başlıklarımıza bakacak (mesela A)
Şu an D2:D4 te gözüken ama kaydırma sonucu ile D3:D5 aralığına kayan verilerimiz için
3. satırın üstüne yeni bir satır eklenecek ve verilerimiz doğal olarak D4:D6 ya kayacak
3. satırımızın c sütununa d4 teki değer eşitlenecek.
ve bu böyle devam edewcek.
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Güncel yardımlarınız için teşekkürler....
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Güncel yardımlarınız için teşekkürler....
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Aşağıdaki kodları, standart bir modül sayfasına kopyalayıp, çalıştırınız.

Kod:
Sub Tablola()
Dim sh1 As Worksheet, shT As Worksheet
Dim i%, j%, son%
Dim giderTuru As String
Set sh1 = Sheets("Sayfa1")
Set shT = Sheets("TABLOM")
shT.Range("A2:F" & shT.UsedRange.Rows.Count).ClearContents
For i = 2 To sh1.Cells(65536, 4).End(xlUp).Row
    If IsNumeric(sh1.Cells(i, 2)) = False And IsEmpty(sh1.Cells(i, 2)) = False Then: giderTuru = sh1.Cells(i, 2)
    If sh1.Cells(i, 4) <> Empty Then
       son = shT.Cells(65536, 1).End(xlUp).Row + 1
       For j = 1 To 6
           shT.Cells(son, j) = sh1.Cells(i, j)
       Next j
       shT.Cells(son, 3) = giderTuru
    End If
Next i
Set sh1 = Nothing
Set shT = Nothing
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam te&#351;ekk&#252;r ederim ancak tamamen yanl&#305;&#351; anlatm&#305;&#351;&#305;m


&#304;lk resim ham halimiz,
&#350;imdi ekledi&#287;im bo&#351; bir sayfa1 de olu&#351;turulacak g&#246;r&#252;nt&#252; (Tercihen Yeni sayfada) d&#252;r

K&#305;rm&#305;z&#305; ba&#351;l&#305;klar eskiden C s&#252;tununda tekrar edilen ba&#351;l&#305;klar; b S&#252;tununda Grup ba&#351;l&#305;&#287;&#305; olarak eklenmi&#351;.

yeni C s&#252;tununda D S&#252;tununda Tekrar edilen ba&#351;l&#305;klar Katagori sonu olarak c s&#252;tununda yer almakta.
d &#252;stununda vereiler korunuyor.

Not: WinXp ye Ekran al&#305;nt&#305;s&#305; arac&#305; eklenmiyormu.
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Nas&#305;l yani ?

TABLOM sayfas&#305;ndaki veriler mi, Sayfa1 format&#305;na &#231;ekilecek ?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
evet. do&#287;rudur
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
&#304;yi de H&#252;seyin bey karde&#351;im

Siz msn'de tarif etmediniz mi bunu bana ..

Neyse ...
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista


bu &#351;ekilde olan tabloyu





bu &#351;ekle getirmenin bir yolu varm&#305;d&#305;r?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,339
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
&#214;zet tablo sihirbaz&#305; i&#351;inize yarayabilir.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam daha evvel hi&#231; kullanmad&#305;m bunu makro ile halledebilmek benim i&#231;in daha kolay olacakt&#305;r...
sizin daha evvel veritaban&#305;ndan ado ile almam i&#231;in haz&#305;rlad&#305;&#287;&#305;n&#305;z kodlar&#305;n sonuna eklemem i&#231;in laz&#305;m.

alakadar olabilirseniz ger&#231;ekten sevinirim.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
De&#287;erli Hocalar&#305;m Bu sorumu makro ile &#231;&#246;zebilirmiyim. sayg&#305;lar&#305;mla
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki kodu kullanınız.

Kod:
Sub Tabloya_Gecir()
Dim shT As Worksheet
Dim sh1 As Worksheet
Dim y%, z%, i%, j%, x%, n%
Dim arrGd()
Dim arrMm()
Set shT = Sheets("TABLOM")
Set sh1 = Sheets("Sayfa1")
y = 1: z = 1
ReDim Preserve arrGd(1 To y)
arrGd(y) = shT.Cells(2, 3)
ReDim Preserve arrMm(1 To 2, 1 To z)
arrMm(1, z) = shT.Cells(2, 3)
arrMm(2, z) = shT.Cells(2, 4)
For i = 2 To shT.Cells(65536, 3).End(xlUp).Row
    For j = 1 To UBound(arrGd)
        If shT.Cells(i, 3) = arrGd(j) Then: x = x + 1
    Next j
    If x = 0 Then
       y = y + 1
       ReDim Preserve arrGd(1 To y)
       arrGd(y) = shT.Cells(i, 3)
    End If
    x = 0
        
    For j = 1 To UBound(arrMm, 2)
        If shT.Cells(i, 3) & shT.Cells(i, 4) = arrMm(1, j) & arrMm(2, j) Then: x = x + 1
    Next j
    If x = 0 Then
       z = z + 1
       ReDim Preserve arrMm(1 To 2, 1 To z)
       arrMm(1, z) = shT.Cells(i, 3)
       arrMm(2, z) = shT.Cells(i, 4)
    End If
    x = 0
Next i
x = 1
For i = 1 To UBound(arrGd)
    x = x + 1
    sh1.Cells(x, 2) = arrGd(i)
    For j = 1 To UBound(arrMm, 2)
        If arrGd(i) = arrMm(1, j) Then
           x = x + 1
           sh1.Cells(x, 3) = arrMm(2, j)
           For n = 2 To shT.Cells(65536, 2).End(xlUp)
               If shT.Cells(n, 3) = arrMm(1, j) And shT.Cells(n, 4) = arrMm(2, j) Then
                  x = x + 1
                  sh1.Cells(x, 1) = shT.Cells(n, 1)
                  sh1.Cells(x, 2) = shT.Cells(n, 2)
                  sh1.Cells(x, 4) = shT.Cells(n, 4)
                  sh1.Cells(x, 5) = shT.Cells(n, 5)
                  sh1.Cells(x, 6) = shT.Cells(n, 6)
               End If
           Next n
           arrMm(1, j) = ""
           arrMm(2, j) = ""
        End If
    Next j
Next i
Set shT = Nothing
Set sh1 = Nothing
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Ferhat Hocam &#231;ok te&#351;ekk&#252;r ederim, kendim tabloma uyarlama yapar&#305;m art&#305;k...
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn ferhat hocam size bir&#351;ey daha dan&#305;&#351;sam

resminde
Alt gruplar&#305;n toplam&#305;n&#305; F s&#252;tununa,
Ana grubun toplam&#305;n&#305;da g s&#252;tununa yazd&#305;rmak m&#252;mk&#252;nm&#252;d&#252;r.

Yani
g2= topla(e4:e12)
f3=topla(e4:e6)
f7=e8
f9=e10
f11=e12

de&#287;er olarak yazsada olur, formul g&#246;z&#252;kmesin yada hangisi daha kolay ise.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hocam Kodlar&#305;n&#305;z&#305; Tabloma uyarlad&#305;m gibi bir&#351;ey...
&#304;steklerimi kodun i&#231;ine yazd&#305;m, kod &#231;al&#305;&#351;t&#305;ktan sonra nerde ne istedi&#287;im belli... tekrar yard&#305;m ederseniz sevinirim.
Kod:
Sub Tabloya_Gecir_Hsr()
Dim shT As Worksheet
Dim sh1 As Worksheet
Dim y&#37;, z%, i%, j%, x%, n%, noAna%, noAlt%
Dim arrGd()
Dim arrMm()
Set shT = Sheets("TABLOM")
Set sh1 = Sheets("Sayfa1")

y = 1: z = 1
ReDim Preserve arrGd(1 To y)
    arrGd(y) = shT.Cells(2, 3)
    
ReDim Preserve arrMm(1 To 2, 1 To z)
    arrMm(1, z) = shT.Cells(2, 3)
    arrMm(2, z) = shT.Cells(2, 4)

For i = 2 To shT.Cells(65536, 3).End(xlUp).Row
    For j = 1 To UBound(arrGd)
        If shT.Cells(i, 3) = arrGd(j) Then: x = x + 1
    Next j
    If x = 0 Then
       y = y + 1
       ReDim Preserve arrGd(1 To y)
       arrGd(y) = shT.Cells(i, 3)
    End If
    x = 0
        
    For j = 1 To UBound(arrMm, 2)
        If shT.Cells(i, 3) & shT.Cells(i, 4) = arrMm(1, j) & arrMm(2, j) Then: x = x + 1
    Next j
    If x = 0 Then
       z = z + 1
       ReDim Preserve arrMm(1 To 2, 1 To z)
       arrMm(1, z) = shT.Cells(i, 3)
       arrMm(2, z) = shT.Cells(i, 4)
    End If
    x = 0
Next i

'Diziye al&#305;nanlar&#305; sayfaya aktar
With sh1
    .Cells.Clear
    .Columns(1).ColumnWidth = 5.14
    '.Columns(1).HorizontalAlignment = xlRight
    .Columns("B:I").ColumnWidth = 5
    .Columns("J").ColumnWidth = 8
    .Columns("K:M").ColumnWidth = 10
    .Columns("N").ColumnWidth = 5
    With .Cells(3, 1)
        .Value = shT.Cells(2, 2)            'B&#252;t&#231;e Y&#305;l&#305;
        .Font.Bold = True
    End With
    With .Cells(3, 2)
         .Value = "B&#252;t&#231;e Y&#305;l&#305; Tablosudur"
         .Font.Bold = True
    End With
    With .Cells(4, 1)
         .Value = "&#199;eltik &#220;retim Maliyetine Etki Eden Fakt&#246;rler"
         .Font.Bold = True
         .HorizontalAlignment = xlLeft
         .Select
    End With
End With

x = 5: noAna = 1                              'Ba&#351;lang&#305;&#231; Sat&#305;r nosu
For i = 1 To UBound(arrGd)
    x = x + 1
    With sh1
        With .Cells(x, "A")
                            .Value = noAna & " )[Kodun Soldan Uzunlu&#287;un &#304;ki eksik K&#305;sm&#305; burada yazs&#305;n]"
                            .Font.ColorIndex = 3
                            .Font.Bold = True
        End With
        With .Cells(x, "M")
                           .Value = "Ana Grup Toplam&#305;(Mesala;Sadece Kiralar)"
                           .Font.ColorIndex = 3
                           .Font.Bold = True
        End With
    End With
    '=(PAR&#199;AAL(F15;1;UZUNLUK(F15)-2))*1 yani formul&#252; ile elde edilen k&#305;s&#305;m
    '1504 i&#231;in 15, 105 i&#231;in 1 gibi
    sh1.Cells(x, 2) = arrGd(i)                  'Gider Ana Ba&#351;l&#305;&#287;&#305;n&#305;n Yaz&#305;laca&#287;&#305; S&#252;tun: E
   noAlt = 1
    For j = 1 To UBound(arrMm, 2)
        If arrGd(i) = arrMm(1, j) Then
           x = x + 1
'           sh1.Cells(x, 2) = noAna & "-" & noAlt & " )"
           With sh1
               With .Cells(x, "B")
                                  .Value = "Kodun Tamam&#305; 101,102,105,1601 vs"
                                  .Font.ColorIndex = 3
                                  .Font.Bold = True
               End With
                    .Cells(x, "C").Value = arrMm(2, j)          'Masraf Merk.nin Yaz&#305;laca&#287;&#305; S&#252;tun: F
               With .Cells(x, "L")
                                  .Value = "Alt Grup Toplam&#305;(Mesala;Sadece Kira-Kumdereler)"
                                  .Font.ColorIndex = 3
                                  .Font.Bold = True
               End With
           End With
           For n = 2 To shT.Cells(65536, 2).End(xlUp)
                'sh1.Cells(x, 2) = noAna & "-" & noAlt & " )"

               If shT.Cells(n, 3) = arrMm(1, j) And shT.Cells(n, 4) = arrMm(2, j) Then
                  x = x + 1

'                  sh1.Cells(4, 1) = shT.Cells(n, 2)            'B&#252;t&#231;e Y&#305;l&#305;
                  With sh1
                     With .Cells(x, "C")
                                       .Value = "S&#305;rano 1,2,3 gibi"
                                       .Font.ColorIndex = 3
                                       .Font.Bold = True
                    End With
                          .Cells(x, "D").Value = shT.Cells(n, 4)            'Masraf Merkezi
                          .Cells(x, "I").Value = shT.Cells(n, 1)            'Maliyet Y&#305;l&#305;
                          .Cells(x, "J").Value = "B&#252;t&#231;esinden"              'A&#231;&#305;klamas&#305;
                      With Cells(x, "K")
                                        .Value = shT.Cells(n, 5)           'Tutar&#305;
                                        .NumberFormat = "#,##0.00"
                      End With
                  End With
                  'kod = shT.Cells(n, 6)
                  'sh1.Cells(x, 12) = shT.Cells(n, 6)           'Kodu
               End If
           Next n
           arrMm(1, j) = ""
           arrMm(2, j) = ""
        End If
        noAlt = noAlt + 1
    Next j
    noAna = noAna + 1
Next i



Set shT = Nothing: Set sh1 = Nothing
End Sub
 
Üst