• DİKKAT

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

sütunları tek sütuna toplama Makrosu

Katılım
2 Ekim 2013
Mesajlar
347
Excel Vers. ve Dili
ofis 2019 türkçe
windows 10 pro türkçe
Arkadaşlar merhaba,

Aynı belgede sayfa1 ve Sayfa2 de
8 ayrı sütunda verilerim var
A-B-C-D-E-F-G-H

bu verileri sayfa3 deki A sütununa altalta ekleyerek tek sütun haline getirmem lazım.
Dikkat : Her sütunda farklı sayıda satır var.

Örnek dosyaya ihtiyacı olanlar için şu an örnek dosyayı upload yapamıyorum. Akşama yaparım.

yardımlarınız için şimdiden teşekkürler
 
Aşağıdaki kodu deneyiniz.

Kod:
Sub SÜTUNLARI_ALT_ALTA_BİRLEŞTİR()
    Dim X As Byte, Y As Integer, Sayfa() As Variant, S1 As Worksheet, S2 As Worksheet, Son As Long
    
    Set S1 = Sheets("Sayfa3")
    
    Sayfa = Array("Sayfa1", "Sayfa2")
    
    For X = 0 To UBound(Sayfa)
        Set S2 = Sheets(Sayfa(X))
        For Y = 1 To 8
            Son = S2.Cells(S2.Rows.Count, Y).End(3).Row
            S2.Range(S2.Cells(1, Y), S2.Cells(Son, Y)).Copy S1.Cells(S1.Rows.Count, 1).End(3)(2)
        Next
    Next

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
çok teşekkürler Korhan bey işim görüldü.

Ancak biraz daha kavramak adına;
1) Makrodaki
For Y = 1 To 8

satırındaki 8 sayısını değiştirerek istediğimiz kadar sütuna aynı işlemi yapabilir miyiz?
Örneğin 8 yerine 2 yazsak ilk 2, 10 yazsak ilk 10 sütunu mı dikkate alır. Makroda başka bir değişiklik yapmamıza gerek var mı?

2) Ya da satırı şöyle yapsak
For Y = 2 To 8
2. ile 8. sütunu mu dikkate alacak?

3) Belgede 2. 5. 7. sütunları birleştir desek o satır nasıl olacak?

kusura bakmayın tamamen olayı biraz daha iyi kavrayıp daha fazla rahatsızlık vermeme adına soruyorum
saygılar, sevgiler ve içten selamlar
 
Merhaba,

1-2 nolu sorularınızın cevabı;

"A" sütununun sayısal değeri 1'dir. Diğer sütunlarda bu şekilde sırayla gider.

For Y = 1 To 8 dediğimizde A-H dahil arasındaki sütunları dikkate alır.

Atlamalı sütunların birleştirilmesi gerekiyorsa iki çözüm önerebilirim.

1. Çözüm;

Sütun atlamaları düzenli olacaksa;

Kod:
For Y = 1 To 8 Step 2
Bu kod satırında yine döngü 1 den başlar fakat ikinci kez dönüşünde sütun değeri 3 olacaktır. Bu şekilde sütun değeri üzerine +2 yaparak döngü devam eder. Başlangıç değeri olan 1 değerini isteğinize göre değiştirebilirsiniz.

2. Çözüm;

Sütun atlamaları düzensiz olacaksa;

Kod:
Sütun = Array(2, 4, 5, 8, 9)
For Y = 0 To Ubound(Sütun)
     Son = S2.Cells(S2.Rows.Count, Sütun(Y)).End(3).Row
     S2.Range(S2.Cells(1, Sütun(Y)), S2.Cells(Son, Sütun(Y))).Copy S1.Cells(S1.Rows.Count, 1).End(3)(2)
Next

Bu kod satırında ise değerlendirmeye alınacak sütunları diziye alıp döngümüzde kullanıyoruz.
 
seçmeli sütunlu birleştirme olan makro satırlarının, sıralı sütunda olduğu gibi tamamını ekler misiniz? Ben yerine koymaya çalıştım ama beceremedim.
 
Deneyiniz...

Kod:
Sub SEÇMELİ_SÜTUNLARI_ALT_ALTA_BİRLEŞTİR()
    Dim X As Byte, Y As Integer, Sayfa() As Variant, Sütun() As Variant
    Dim S1 As Worksheet, S2 As Worksheet, Son As Long
    
    Set S1 = Sheets("Sayfa3")
    
    Sayfa = Array("Sayfa1", "Sayfa2")
    
    For X = 0 To UBound(Sayfa)
        Set S2 = Sheets(Sayfa(X))
        Sütun = Array(2, 4, 5, 8, 9)
        For Y = 0 To UBound(Sütun)
             Son = S2.Cells(S2.Rows.Count, Sütun(Y)).End(3).Row
             S2.Range(S2.Cells(1, Sütun(Y)), S2.Cells(Son, Sütun(Y))).Copy S1.Cells(S1.Rows.Count, 1).End(3)(2)
        Next
    Next

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
oldu... Korhan bey, her 2 makroda zaman zaman işime yarayacak, bana zaman kazandıracak en önemlisi de hatasız bir kopyalama yapacak...
Allah ne muradınız varsa versin :)
 
Geri
Üst