Sütun saydırma

Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
Arkadaşlar selam,

Benim derdim şudur.

Elimizde çok fazla veri var 20000 satır olabiliyor ancak satırlar arasında boşluk oluyor. benim veriler ile çalışmam için bu boşlukları bir üst satırdaki veriye eşit yapmam gerekiyor. bunun için bir makro yazayım dedim.

Ancak yapamadığım bazı şeyler var.

Bunlardan birincisi Kaç tane sütunda veri varsa o kadarında boş olan satırları doldurması gerek. bunun için bir döngü nasıl kullanılır.

ikincisi elimde 12000 satır veri varsa macronun 12000. satırda çalışmayı bırakması lazım. ancak bu sayı standart değil her defasında değişiyor bunu nasıl tanımlarız?

Ekte bir örnek gönderiyorum macroyu çalıştırdığında boş olan satırlar bir üstteki satırla aynı veriyi atıyor.

Şimdiden yardımlarınız için teşekkürler.
 

mehmett

Altın Üye
Katılım
18 Mayıs 2005
Mesajlar
2,571
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn mavisachal

Sorularınızı Excel Soruları ana bölümünün uygun alt bölümlerinde sorunuz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,598
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Sub DOLDUR()
    For X = 1 To [A65536].End(3).Row
    For Y = 2 To 8 'Bu değerler sütun bilgileridir. (B-H) sütunlarını ifade eder.
    If Cells(X, Y) = "" Then Cells(X, Y) = Cells(X - 1, Y)
    Next: Next
    MsgBox "İŞLEM TAMAMLANMIŞTIR.", vbInformation
End Sub
 
Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
istediğime çok yaklaşmış sağolasın ancak bir sorun daha var burada verilerimin her zaman sütun sayısı değişiyor yani değerini de sadece veri bulunan sütunlar için tanımlayabilir miyiz?

Teşekkürler.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,428
Excel Vers. ve Dili
Ofis 365 Türkçe
Makro ile olması şart mı?

Ekteki dosyayı inceleyiniz
 
Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
kesinlikle macro ile bir yolu oldugunu dusunuyorum hem her defasında formul yazamam cunku gunde 10 defa nerdeyse bu verilerle calismam gerekiyor.
Ama ilgin ve zaman ayırman icin tesekkur ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,598
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ben kodu verirken eklediğiniz örnek dosyaya göre düzenlemiştim. Eğer orjinal dosyanızın formatı farklı ise belirtmediğiniz sürece bizler bilemeyiz. Dosyanızın benzerini eklerseniz yardımcı olmaya çalışırız.
 
Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
vermiş olduğum örnek dosyada sorun yok kastettiğim bu dosyamda
For Y = 2 To 8 kullanmışsınız o dosyada H kolonuna kadar veri vardı ancak benim her dosyamda kolon sayısı değişebiliyor onun için bu y değerini de sadece içinde veri olan kolonlar için atayabilir miyiz diye sordum?

Olabilir mi bilen var mı arkadaşlar?

Teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,598
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Kodu aşağıdaki gibi değiştirerek denermisiniz.

Kod:
Sub DOLDUR()
    For X = 2 To [A65536].End(3).Row
    For Y = 2 To Cells(X - 1, 256).End(1).Column
    If Cells(X, Y) = "" Then Cells(X, Y) = Cells(X - 1, Y)
    Next: Next
    MsgBox "İŞLEM TAMAMLANMIŞTIR.", vbInformation
End Sub
 
Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
Tamamdır dostum tam da istediğim gibi oldu çok teşekkür ederim.

İstediğimi yapıyor ve herşey süper. Sorun olmasa da merak ettiğim bişey var şimdi 10000 satır ve 15 sütundan oluşan vir dosyada denedim boş hücreleri istediğim gibi doldurdu aancak işlem bitene kadar yaklaşık 2 dk sadece 1den 10a kadar olan satırı gösterdi öncekilerde ise atanan değerleri gösteriyor yani işlsmin nerde olduunu yandaki durum çubuğundan görebiliyordum bunun sebebi ne olabilir bu biraz uzmanlık sorusu oldu sanırım:)

Teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,598
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Eklediğiniz örnek dosyadaki kodlarda Select ifadesi kullanılmış o yüzden kod işlem yapılan satırı seçtiği için hangi satırda olduğunu görebiliyordunuz. Ama bu ifade kodun biraz yavaşlamasına sebep olacaktır. Eğer illede bu şekilde olsun derseniz kodu aşağıdaki gibi kullanabilirisiniz.

Kod:
Sub DOLDUR()
    For X = 2 To [A65536].End(3).Row
    For Y = 2 To Cells(X - 1, 256).End(1).Column
    Cells(X, Y).Select
    If Cells(X, Y) = "" Then Cells(X, Y) = Cells(X - 1, Y)
    Next: Next
    [A1].Select
    MsgBox "İŞLEM TAMAMLANMIŞTIR.", vbInformation
End Sub
 
Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
Arkadaşlar ekteki dosyaya bakabilir misiniz. nedir hata anlamadım herşey normal gibi gozukuyor:(

Boşlukları doldurması gerekiyor aslında ama! anlayamadım nedir sorunu!

Teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,598
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sebebi aşağıdaki satırda gizli. Çünkü bu satır diyorki işleme 2. satırdan başla A sütunundaki en son dolu satıra kadar devam et. Fakat sizin dosyanızdaki en son dolu satır N sütunundaki 11. satırdır.

Kod:
For x = 2 To [A65536].End(3).Row
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,598
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki şekilde denermisiniz.

Kod:
Sub Fill()
    For X = 2 To Cells.CurrentRegion.Rows.Count
    For Y = 1 To Cells(X - 1, 256).End(1).Column
    Cells(X, Y).Select
    If Cells(X, Y) = "" Then Cells(X, Y) = Cells(X - 1, Y)
    Next: Next
    [A1].Select
    MsgBox "İŞLEM TAMAMLANMIŞTIR.", vbInformation
End Sub
 
Katılım
28 Şubat 2007
Mesajlar
251
Excel Vers. ve Dili
visual basic
Teşekkür ederim bu sefer oldu sanırım deneme fırsatım çok olmadı ama inşallah bu sefer bi sorun çıkmaz.

Tekrar teşekkürler.
 
Üst