• DİKKAT

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

Farklı satır ve sütuna uğrayarak veri çekmek

  • Konbuyu başlatan Konbuyu başlatan onrays
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Aralık 2011
Mesajlar
84
Excel Vers. ve Dili
2007 / Türkçe
Merhaba,

Farklı satır ve sütunlarda yer alan yazı ve miktarlarını alt alta getirebilmek. Formül tüm satırlara sırasıyla uğramalı dolu olanı çekmesi gerekiyor. Malzeme yerleri sabit olduğundan verilen formülü 100-150 kalemlik forma uygulayacağım.

Şimdiden Teşekkür ederim.

Saygılarımla
 

Ekli dosyalar

Merhaba,

Module kopyalayıp çalıştırın.

Kod:
Sub Duzenle()
 
    Dim alan As Range, sat As Long
    
    Application.ScreenUpdating = False
    Range("K3:L" & Rows.Count).ClearContents
    
    sat = 3
    For Each alan In Range("B3:G14")
        If alan.Column Mod 2 = 0 And alan <> "" Then
            Cells(sat, "K") = alan
            Cells(sat, "L") = alan.Offset(0, 1)
            sat = sat + 1
        End If
    Next alan
            
End Sub
.
 
Ömer Bey, Teşekkür ederim.

Karşısındaki veri sayı yani 0 ise almamasını nasıl sağlayabiliriz.

Teşekkür ederim.
 
Karşısındaki veri sayı yani 0 ise almamasını nasıl sağlayabiliriz.
.

Bu şekilde deneyin.

Kod:
Sub Duzenle()
 
    Dim alan As Range, sat As Long
    
    Application.ScreenUpdating = False
    Range("K3:L" & Rows.Count).ClearContents
    
    sat = 3
    For Each alan In Range("B3:G14")
        If alan.Column Mod 2 = 0 And alan <> "" And _
            alan.Offset(0, 1) <> 0 Then
            Cells(sat, "K") = alan
            Cells(sat, "L") = alan.Offset(0, 1)
            sat = sat + 1
        End If
    Next alan
            
End Sub
.
 
Ömer Bey, fevkalade hızlı ve hakikaten takdir edilecek birisiniz.

Peki ben bu makro ile (B3:G14) aralığını formuma göre düzenlediğimde (B3:G400) Yine aynı verimlilik ile karşılacağım sanırım.

Formul ile yapmak isteseydik herhangi bir yorumda bulunurmuydunuz.

Saygılarım. Teşekkür ederim...
 
Evet aralığı ( B3:G14 ) değiştirmeniz yeterli olur.

Formül ilede yapılabilir fakat ilk bakışta gördüğüm kadarıyla tek bir yardımcı sütun kullanmak gerekir. Eğer bu şekilde işinize yararsa formüllede bir öneri sunabilirim.
 
Zahmet olmazsa yardımlarınız için teşekkür ederim.
Ben biraz acemiyim. Ömer Bey verdiğiniz makro kodlamasını yazıp çalıştırdım sıkıntı yok. Kaydetmek ve her defasında çalıştırmak için tekrar açıyorum. Çalıştırdığımda şöyle bir yazı yazıyor.

"Makro bu çalışma kitabında olmayabilir veya devre dışı bırakılmış olabilir.

Makroyu kaydetmek istediğimde "Dosya türü listesinde makro özelliği etkinleştirilmiş bir dosya türü seçin" diye yazıyor.
 
Dosyayı kaydederken farklı kaydet menüsünden "Excel Makro Etkin Çalışma Kitabı" olarak kaydedin.
 
Ömer Bey,

(B3:G14) makro ile çektikten sonra onların altına (H3:I20) yer alan kodları çekme işlevi nasıl olmalı ben

For Each alan In Range("B3:G14", "H3:I6") yaptım fakat karışık çekti. B3:G14 bittikten sonra H3:I6 çekmesi tarafımda daha değerli olacaktır.

Yardımlarınız için gerçekten minnettarım.
 
Yazdığınız formatta yazarsanız karışık çekmez, istediğiniz gibi aralığın biri bittikten sonra diğeri başlar.
 
Ömer Bey,

o formatta yazınca yukarıdan aşağıya kadar verileri karışık çekiyor.
("B3:G14", bittikten sonra "H3:I6") çekmesi için makronun neresini değiştirmemiz gerekmektedir.

Formul olarak satır ekleyerek yapabilirim dediniz. Bakabildiniz mi?

Teşekkür ederim.
 
o formatta yazınca yukarıdan aşağıya kadar verileri karışık çekiyor.
("B3:G14", bittikten sonra "H3:I6") çekmesi için makronun neresini değiştirmemiz gerekmektedir.
.

Bu formatta bir örnek yazıp kodu çalıştırın ve hangi bölümlerin karışık geldiğini dosya üzerinde renklendirip açıklarak bir dosya eklermisiniz.
 
Ekte yer almaktadır.

Ömer Bey, bunun mantığınıda az da olsa bahsetme imkanınız varmı farklı daha farklı sütunlardan veri çekmek istediğimizde nasıl bir izlemeliyiz.

Teşekkür ederim.
 

Ekli dosyalar

For Each alan In Range("B3:G14", "H3:I6")

Kırmızı işaretli tırnakları silerek deneyin.

For Each alan In Range("B3:G14, H3:I6")

Gibi.

Mantığı bu şekilde, çekeceğiniz veri aralılığını yukarıdaki gibi girmeniz yeterli. Aktarılan alanda da "K" ve "L" bölümleri aktarılacak sütunları temsil eder.

sat = 3 ise verilerin aktarıldığı alanın 3. satırdan başlamasıdır.

alan.Column Mod 2 = 0 ise verilerde bakılan isimler sütun atlayarak gittiğ için sadece mod 2 sonucu 0 olan sütunları kontrol et dedim. Diğer bölümler anlaşılıyordur sanırım.
 
Merhaba Arkadaşlar,

Örnek Ekte yer almaktadır.

Kısaca : C ve H sütunlarında yazan metinin karşısında kırmızı çizgiler içerisinde MİKTAR 0 dan büyük bir sayı varsa onu aşağıya doğru sıralaması gerekmektedir.
Örnek : N ve Q da olduğu gibidir.

İlginiz İçin Şimdiden Teşekkür ederim
 

Ekli dosyalar

Merhaba,

Aşağıdaki kodu deneyiniz.

Kod:
Sub AKTAR()
    Dim Alan As Range, Satir As Integer
    
    Satir = 6
    
    Range("N6:Q" & Rows.Count).ClearContents
    
    For Each Alan In Range("C6:G17,H6:L17")
        If Alan.Column = 3 Or Alan.Column = 8 Then
            If Alan.Offset(0, 3) <> 0 Then
                Cells(Satir, "N") = Alan.Offset(0, 0).Value
                Cells(Satir, "O") = Alan.Offset(0, 1).Value
                Cells(Satir, "P") = Alan.Offset(0, 3).Value
                Cells(Satir, "Q") = Alan.Offset(0, 4).Value
                Satir = Satir + 1
            End If
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Teşekkür ederim.

If Alan.Column = 3 Or Alan.Column = 8 Then
If Alan.Offset(0, 3) <> 0 Then

Hocam bu kısımda kod ne demek istiyor. Örnek verecek olursak KOD sütununuda iptal etmek veya bir sütun daha eklemek istiyorum. Kısa da olsa açıklama yapabilirseniz. buna bağlı olarak ekleme çıkarma olduğunda yürüyebileyim.

Teşekkür ederim.
 
Merhaba,

Range("C6:G17,H6:L17") ifadesi ile sizin dosyanızdaki tablolarınızı ALAN değişkenine tanımladık.

Fakat bu tablolarda başlangıç sütunları 3. ve 8. sütunlarda (C-H) bulunuyor. Doğal olarak aşağıdaki sorguyu kod içinde kullanarak gereksi sütunları kontol etmekten kurtuluyoruz.

Kod:
If Alan.Column = 3 Or Alan.Column = 8 Then

Yani bu ifade de döngüye alınan hücrenin sütun numarası 3 yada 8 ise işleme devam et diyoruz.

If Alan.Offset(0, 3) <> 0 Then ifadesi ile MİKTAR sütununlarının sıfıra eşit olup olmadığını sorguluyoruz. Sıfıra eşit değilse kod işleme devam ediyor.

Umarım açıklamalar size yeterli gelir.
 
Teşekkür ederim. İnanın ki makro' da bilgim yok denecek kadar az. Formül olmuş olsa bir şekilde çözüyorum, fakat makro sıkıntı benim için.

Miktar kısmı farklı sütunlarda ise ;

If Alan.Offset(0, 3) <> 0 and (0, 5) Then gibi birşey mi yapacağız.

Saygılarımla.
 
Geri
Üst