• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru Farklı Sütunlardaki Verileri Tek Sütunda Toplama

Katılım
25 Şubat 2019
Mesajlar
87
Excel Vers. ve Dili
Office 2021 (TR)
Arkadaşlar kolay gelsin, yapmak istediğim şu, sayfa 1 de A sütunundan AAX sütununa kadar her sütunda farklı adetlerde veriler var, ben örnek olarak birkaç sütunu doldurdum, dolu olan hücrelerdeki verileri sayfa 2 de A sütununa alt alta kopyalamasını istiyorum. Hepinize şimdiden teşekkür ederim.
 

Ekli dosyalar

Aşağıdaki makroyu deneyiniz:

PHP:
Sub biraraya_topla()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
    
    
sonsat = s1.[A1].SpecialCells(xlLastCell).Row
sonsut = s1.[A1].SpecialCells(xlLastCell).Column

For sut = 1 To sonsut
    yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
    s1.Range(Cells(1, sut), Cells(sonsat, sut)).Copy s2.Cells(yeni, "A")
Next
    s2.Range("A:A").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp

    Application.CutCopyMode = False
End Sub
 
Sub biraraya_topla() Set s1 = Sheets("Sayfa1") Set s2 = Sheets("Sayfa2") sonsat = s1.[A1].SpecialCells(xlLastCell).Row sonsut = s1.[A1].SpecialCells(xlLastCell).Column For sut = 1 To sonsut yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1 s1.Range(Cells(1, sut), Cells(sonsat, sut)).Copy s2.Cells(yeni, "A") Next s2.Range("A:A").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp Application.CutCopyMode = False End Sub
Yusuf44 öncelikle emeğin için teşekkürler, şöyle bir sıkıntı var, yeni bir veri girip tekrar makroyu çalıştırdığımda önceki verileri de tekrar atıyo ikinci sayfaya, bunun önüne geçebilirsek tam istediğim gibi olacak.
 
sonsat satırından önce aşağıdaki satırı ekleyip deneyin. Önce Sayfa2'nin A sütununu temizler, sonra tüm verileri aktarır:

s2.Range("A:A").ClearContents
 
Yusuf44 hocam büyük ihtimal oldu, çok teşekkür ederim, eline emeğine sağlık, hata veren bir yer olursa dönüş yaparım.
Yusuf44 hocam, peki şöyle bir şey mümkün müdür?
Sütunların 2. satırlarında bulunan verileri alt alta kopyalayacak, sonra yanlarına başlıkta yazanı yazacak, bu verileri Sayfa 2 de A sütununa kopyalayacak.
 

Ekli dosyalar

Aşağıdaki gibi deneyin, verilerin çokluğuna göre uzun sürebilir:

Kod:
Sub biraraya_topla()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Application.ScreenUpdating = False
s2.Range("A:B").ClearContents
  
sonsat = s1.[A1].SpecialCells(xlLastCell).Row
sonsut = s1.[A1].SpecialCells(xlLastCell).Column

For sut = 1 To sonsut
    son = WorksheetFunction.Max(2, s1.Cells(Rows.Count, sut).End(3).Row)
    For j = 2 To son
        If s1.Cells(j, sut) <> "" Then
            yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
            s2.Cells(yeni, "A") = s1.Cells(j, sut)
            s2.Cells(yeni, "B") = s1.Cells(1, sut)
        End If
    Next
Next
Application.ScreenUpdating = False
MsgBox "İşlem Tamamlandı"
End Sub
 
Aşağıdaki gibi deneyin, verilerin çokluğuna göre uzun sürebilir:

Kod:
Sub biraraya_topla()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa2")
Application.ScreenUpdating = False
s2.Range("A:B").ClearContents
 
sonsat = s1.[A1].SpecialCells(xlLastCell).Row
sonsut = s1.[A1].SpecialCells(xlLastCell).Column

For sut = 1 To sonsut
    son = WorksheetFunction.Max(2, s1.Cells(Rows.Count, sut).End(3).Row)
    For j = 2 To son
        If s1.Cells(j, sut) <> "" Then
            yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
            s2.Cells(yeni, "A") = s1.Cells(j, sut)
            s2.Cells(yeni, "B") = s1.Cells(1, sut)
        End If
    Next
Next
Application.ScreenUpdating = False
MsgBox "İşlem Tamamlandı"
End Sub
Çok teşekkür ederim Yusuf44 hocam, sağolasın.
 
Bu arada düzeltmeyi unutmuşum. Sondaki False değil True olmalı. True yapıp kodu en az bir kere çalıştırın ki ekran yenileme normale dönsün.
 
Geri
Üst