• DİKKAT

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

satirda arama

Katılım
6 Eylül 2012
Mesajlar
31
Excel Vers. ve Dili
excel 2010
Merhaba,
Soyle bi sikintim var. Mesela a1 satirina 2842+4838+3842 yazdim ve sonucu bana verdi. Benim baska bi satirda 3 tane sayi yazdigim icin bana 3 sayisini donduren bir fonksiyon var mi. Yada ayni satirin icinde 34 tane sayiyi toplasaydim ayni bana 34 u donduren bir fonksiyon var mi. Benim aklima kullandigim "+" sembollerinin sayisini buldurup 1 eklemek geldi ama formulde arama yapamiyorum. Cunku direk toplamanin sonucunu veriyor. Formulde aramayip saydirmayi nasil yaparim yada baska bir yolu varmidir..
 
. . .

Office 2013 de FORMÜLMETNİ diye bir formül var.
Sisteminizde bu formül mevcutsa, şu şekilde yapabilirsiniz.

Kod:
=UZUNLUK(FORMÜLMETNİ(A1))-UZUNLUK(YERİNEKOY(FORMÜLMETNİ(A1);"+";""))+1

. . .
 
İlk etapta ben de sizin gibi düşündüm ancak fonksiyonlarla çözemedim, daha sonra makroyla aşağıdaki çözümü oluşturdum. Aşağıdaki kodları ilgili sayfanın kod bölümüne yapıştırdığınızda, A1:A500 aralığına herhangi bir formül girdiğinizde makro çalışır ve girdiğiniz hücredeki +'ları sayar:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A500")) Is Nothing Then Exit Sub
If Target.HasFormula Then
Target.Offset(0, 1) = "'" & Target.FormulaLocal
sayı = Len(WorksheetFunction.Substitute(Target.Offset(0, 1), "+", ""))
Target.Offset(0, 1) = Len(Target.Offset(0, 1)) - sayı + 1
End If
End Sub
 
hocam makro işe yarıyor teşekkurler ama su sekilde bi problem olusuyor. ben 0 yazdfıgımda da 1 değerini donduruyor dogal olarak 0 da hiç değer dondurmemesi gerekiyor.?
 
İlk etapta ben de sizin gibi düşündüm ancak fonksiyonlarla çözemedim, daha sonra makroyla aşağıdaki çözümü oluşturdum. Aşağıdaki kodları ilgili sayfanın kod bölümüne yapıştırdığınızda, A1:A500 aralığına herhangi bir formül girdiğinizde makro çalışır ve girdiğiniz hücredeki +'ları sayar:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A500")) Is Nothing Then Exit Sub
If Target.HasFormula Then
Target.Offset(0, 1) = "'" & Target.FormulaLocal
sayı = Len(WorksheetFunction.Substitute(Target.Offset(0, 1), "+", ""))
Target.Offset(0, 1) = Len(Target.Offset(0, 1)) - sayı + 1
End If
End Sub




hocam makro işe yarıyor teşekkurler ama su sekilde bi problem olusuyor. ben 0 yazdfıgımda da 1 değerini donduruyor dogal olarak 0 da hiç değer dondurmemesi gerekiyor.?
 
. . .

Kullanıcı tanımlı fonksiyon yazılabilir. Ancak şu kısımların netleşmesi gerekiyor.

Örneğin A1 hücresine =1+2+3 yazdığınızda işlem sonucunda 3 sayı değerini vermesi gerekiyor.
Ancak A1 hücresine sadece 0 veya 4 yazarsanız işlem sonucu ne olacak.

. . .
 
. . .

Kullanıcı tanımlı fonksiyon yazılabilir. Ancak şu kısımların netleşmesi gerekiyor.

Örneğin A1 hücresine =1+2+3 yazdığınızda işlem sonucunda 3 sayı değerini vermesi gerekiyor.
Ancak A1 hücresine sadece 0 veya 4 yazarsanız işlem sonucu ne olacak.

. . .

A1 hücresine 0 yazdığımda başka bir hücrede 0 olması gerekiyor, 4 gibi bir değer yazdığımda sonucun 1 olması gerekiyor, sizin dediğiniz gibi =1+2+3 gibi bir değerde de 3 sayısını vermesi gerekiyor.
 
. . .

Boş bir modüle şu kodları yapıştırın.
Daha sonra KSAY formülü oluşacaktır. Formülün kullanım şekli. ( - + veya başka karakterleride saydırabilirsiniz)
Kod:
=KSAY(A1;"+")
Kod:
Function KSAY(HUCRE As Range, KARAKTER As String)
    
    If HUCRE = 0 Then
        KSAY = 0
    Else
        
        SAY = Empty
        FORMUL = HUCRE.FormulaLocal
        
        For i = 1 To Len(FORMUL)
            If Mid(FORMUL, i, 1) = KARAKTER Then SAY = SAY + 1
        Next i
        
        If SAY = 0 Then
            KSAY = 1
        Else
            KSAY = SAY + 1
        End If
    End If
    
End Function

. . .
 
. . .

Boş bir modüle şu kodları yapıştırın.
Daha sonra KSAY formülü oluşacaktır. Formülün kullanım şekli. ( - + veya başka karakterleride saydırabilirsiniz)
Kod:
=KSAY(A1;"+")
Kod:
Function KSAY(HUCRE As Range, KARAKTER As String)
    
    If HUCRE = 0 Then
        KSAY = 0
    Else
        
        SAY = Empty
        FORMUL = HUCRE.FormulaLocal
        
        For i = 1 To Len(FORMUL)
            If Mid(FORMUL, i, 1) = KARAKTER Then SAY = SAY + 1
        Next i
        
        If SAY = 0 Then
            KSAY = 1
        Else
            KSAY = SAY + 1
        End If
    End If
    
End Function

. . .

kardeş formulun ilk satırında hata veriyor nedense?
 
Geri
Üst