• DİKKAT

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

veri saydırma

Katılım
3 Kasım 2013
Mesajlar
7
Excel Vers. ve Dili
2007 tr
Hocam, bir satırda bulunan saat şeklindeki verileri c ile y arasındaki z sutununa saydırmak istiyorum. nasıl yapabilirim.
 

Ekli dosyalar

dosyaya göre veriler 1. satırda. C1 ile Y1 arasındaki verilerin hepsi saat ise:

Kod:
Range("Z1").Value = Application.Count(Range("C1:Y1"))
 
Hocam ilginiz için teşekkürler. Satırların hepsini saydırmak için ne gibi bir değişiklik yapmam gerekir?
 
rica ederim.

makro çalıştırılmadan önce işlem yapılacak sayfa seçilmiş (aktif) olmalıdır.

önceki mesajımda da belirttiğim üzere COUNT fonksiyonu rakamsal verileri saymak içindir. hem metin hem de rakam saydırmak için aşağıdaki kodlarda COUNT yerine COUNTA fonksiyonunu kullanınız.

Kod:
Sub satirdaki_rakamlari_say_yontem1()

    Dim sonsat As Long, i As Long
    
    sonsat = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    For i = 1 To sonsat
        Range("Z" & i).Value = Application.Count(Range("C" & i & ":Y" & i))
    Next i

End Sub



Kod:
Sub satirdaki_rakamlari_say_yontem2()

    Dim sonsat As Long
    
    sonsat = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    With Range("Z1:Z" & sonsat)
        .Formula = "=Count(C1:Y1)"
        .Value = .Value
    End With

End Sub


başka yöntemler de bulunabilir.
 
Hocam ilginiz için çok teşekkür ederim. Peki bu işlemi veri yazıldıkca otomatik saydırmak için nasıl bir yol izlemeliyim?
 
bir defada tüm ihtiyaçların ilk mesajda yazılması daha doğru olur. gelen cevaplar başka sorular doğurursa o zaman gündeme getirilir bu şekilde.

ilgili sayfanın isminin üzerinde sağ tıklayarak "kodu görüntüle"yi tıklayın açılan VBE pencesine aşağıdaki kodu kopyalayın. yani kodlar işlem yapılacak sayfanın kod modülünde olmalıdır.

yalnız bunun için ilave kural belirlemek lazım. satıra her veri girildiğinde hesaplama yapılacak mı. bu takdirde dosya yavaşlar, her değişiklikte (= herhangi bir hücreye veri girildiğinde) kod kendiliğinden çalışır.

örnek olarak ben bir tane kural koydum. C-Y arasında kalan sütunların dışında bir sütuna veri girildiğinde kod çalışmayacak.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 3 Or Target.Column > 25 Then Exit Sub
    'A, B ve Y'den sonraki sütunlara veri girilirse kod çalışmasın.
    
    Range("Z" & Target.Row).Value = Application.Count(Range("C" & Target.Row & ":Y" & Target.Row))
End Sub
 
Kod:
sonsat = Cells.Find("*", , , , xlByRows, xlPrevious).Row
Sayın mancubus tüm sütunların en son satırı kodu için de ben teşekkür ediyorum.
 
her ne kadar bana ait olmasa da... rica ederim.

ilk kim buldu ise beynine sağlık.

veri içeren en sağdaki sütunun numarasını da benzer şekilde bulmak elbette mümkün.

ihtiyaç duyan olabilir diyerek ekleyelim.

Kod:
sonsut = Cells.Find("*", , , , xlByColumns, xlPrevious).Column


yalnız şunu da hafızada tutalım. eğer sayfada filtre uygulanmışsa, son satırı bulmaya yarayan kodlar hatalı sonuç verebilir.
 
Son düzenleme:
her ne kadar bana ait olmasa da... rica ederim.

ilk kim buldu ise beynine sağlık.

veri içeren en sağdaki sütunun numarasını da benzer şekilde bulmak elbette mümkün.

ihtiyaç duyan olabilir diyerek ekleyelim.

Kod:
sonsut = Cells.Find("*", , , , xlByColumns, xlPrevious).Column


yalnız şunu da hafızada tutalım. eğer sayfada filtre uygulanmışsa, son satırı bulmaya yarayan kodlar hatalı sonuç verebilir.
Zaten mantık dikkatimi çektiği için dün bende kurcalayarak aynı kodu bulmuştum. Paylaşım için tekrar teşekkürler, kolay gelsin..
 
Geri
Üst