satirda arama

mehmet6006

Altın Üye
Katılım
6 Eylül 2012
Mesajlar
30
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
19-10-2025
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..
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,891
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

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
. . .
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İ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
 

mehmet6006

Altın Üye
Katılım
6 Eylül 2012
Mesajlar
30
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
19-10-2025
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.?
 

mehmet6006

Altın Üye
Katılım
6 Eylül 2012
Mesajlar
30
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
19-10-2025
İ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.?
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,891
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

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.

. . .
 

mehmet6006

Altın Üye
Katılım
6 Eylül 2012
Mesajlar
30
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
19-10-2025
. . .

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.
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,891
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

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
. . .
 

mehmet6006

Altın Üye
Katılım
6 Eylül 2012
Mesajlar
30
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
19-10-2025
. . .

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?
 
Üst