Ondalık Ayırıcısı kullanılacak şekilde birleştirilmiş hücrelerde , kaçıncı karakter

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Arkadaşlar
Eğer değerimiz aşağıdaki gibi Tamsayı deği ise virgülün kaçıncı karakter olduğunu söyleyen makro nasıl yazılır?
87,5
eğer aşağıdaki gibi tamsayı ise virgül değer uzunluğu + 1 dir.
87
 

programer

Altın Üye
Katılım
26 Mayıs 2005
Mesajlar
603
Excel Vers. ve Dili
Office 2022 - Türkçe
Altın Üyelik Bitiş Tarihi
16-03-2025
Arkadaşlar
Eğer değerimiz aşağıdaki gibi Tamsayı deği ise virgülün kaçıncı karakter olduğunu söyleyen makro nasıl yazılır?
87,5
eğer aşağıdaki gibi tamsayı ise virgül değer uzunluğu + 1 dir.
87

???????????????
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Misal, aşağıdaki gibi olabilir.

Kod:
Sub deneme()
x = InputBox("Sayi giriniz", "giriş")
If IsNumeric(x) Then
   If Len(x) - Len(Int(x)) = 0 Then
      MsgBox "Virgül; 1.sıradadır"
   Else
      MsgBox "Virgül; " & Len(Int(x)) + 1 & ".sıradadır"
   End If
End If
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Instr fonksiyonunuda kullanabilirsiniz.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn fpc hocam alakanıza teşekkür ederim.
'125.636.454,10 hata verdi

sayısında hata verdi. amacım
Hücrede virgüllü sayı var ise virgüllden sonrasının puntosunu küçültüp rengini kırmızı yapmak.

Kod:
Sub deneme()
x = InputBox("Sayi giriniz", "giriş")
'x = ActiveCell.Value
If IsNumeric(x) Then
MsgBox Len(x)
   If Len(x) - Len(Int(x)) = 0 Then
 '     MsgBox "Virgül; " & Len(x) + 1 & ".sıradadır"
 '  Else
      MsgBox "Virgül; " & Len(Int(x)) + 1 & ".sıradadır"
   End If
End If
End Sub

Sn. Levetn Hocam şimdi eve çıkyorum önce kullanımı hakkında arştırma yapıp uyarlamaya çalışırım.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Karşısınıza çıkan, hatanın ne olduğunu söylemeyin. Böyle daha zevkli oluyor heralde :)
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
'125.636.454,10 sayısında
If IsNumeric(x) Then
MsgBox Len(x)
If Len(x) - Len(Int(x)) = 0 Then
' MsgBox "Virgül; " & Len(x) + 1 & ".sıradadır"
' Else
MsgBox "Virgül; " & Len(Int(x)) + 1 & ".sıradadır"
End If
End If
MsgBox Len(x)
bunu söylüyor ama If Len(x) - Len(Int(x)) = 0 Then
kontrolüne girmeden end if e gidiyor.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sayın hsayar

Belirttiğiniz durum, bir hata değil .... Sadece hata kontrolüdür.

Demek ki; '125.636.454,10 ; gördüğünüz şey aslında nümeric bir değer değil... Bu yüzden; nasıl tam sayı kısmını ayıracak ki ...

Kodlar, sorunuza istinaden tamamen nümeric işlemler üzerinden geliştirilmiştir.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sayın hsayar

Belirttiğiniz durum, bir hata değil .... Sadece hata kontrolüdür.

Demek ki; '125.636.454,10 ; gördüğünüz şey aslında nümeric bir değer değil... Bu yüzden; nasıl tam sayı kısmını ayıracak ki ...

Kodlar, sorunuza istinaden tamamen nümeric işlemler üzerinden geliştirilmiştir.

'125.636.454,10 kısmında belirtmek amacıyla ' işaretini sonradan ekledim.
denediğim değer 125636454,10 idi
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ben başındaki tek tırnak işaretini kastederek "numeric değil" demedim.

If Isnumeric(x) then satırından sonra End If'e atlıyorsa; girilen değer numeric (sayısal) değildir.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,271
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
sn fpc hocam alakanıza teşekkür ederim.
'125.636.454,10 hata verdi

sayısında hata verdi. amacım
Hücrede virgüllü sayı var ise virgüllden sonrasının puntosunu küçültüp rengini kırmızı yapmak.
Sayı biçimli olduğunda istediğiniz mümkün değildir. Metine çevrilmesi gerekir.
"," konumunu bulmak kolay tabiki.
Kod:
[a1] = 125.65
konum = Instr(1, [a1], ",")
MsgBox konum [COLOR=darkgreen]'=>4[/COLOR]
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
evet anemos hocam dediğinizda haklısınız
bende bir şeyler yaptım ve sonucu aşağıdaki kodlaral buldum bulmasına ama
Kod:
Sub DenemeInstr2()

dgr = ActiveCell.Value
If IsNumeric(dgr) Then
    If Int(dgr) - dgr <> 0 Then
        x = InStr(1, ActiveCell.Value, ",")
    Else
        x = Len(dgr) + 1
    End If
Else
    x = "Aktif H&#252;credeki de&#287;er say&#305; de&#287;il"
End If
        
MsgBox x & " - " & Len(dgr)

End Sub
ben a&#351;a&#287;&#305;daki kodlardaki start, lenght alanlar&#305;n&#305; de&#287;i&#351;tirerek rakamlar&#305;n , den sonras&#305;n&#305;n puntosunu de&#287;i&#351;tirmekti. ancak say&#305;sla de&#287;erlerde i&#351;e yaram&#305;yor.

Kod:
Sub Makro_Fontkucult()
'
' Makro2 Makro
' Makro Hsayar taraf&#305;ndan 14.02.2008 tarihinde kaydedildi.
'

'
    'ActiveCell.FormulaR1C1 = ActiveCell.Value
    With ActiveCell.Characters(Start:=1, Length:=3).Font
        .Name = "Arial Tur"
        .FontStyle = "Normal"
        .Size = 9
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    With ActiveCell.Characters(Start:=4, Length:=2).Font
        .Name = "Arial Tur"
        .FontStyle = "Normal"
        .Size = 7
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 3
    End With
End Sub
 
Son düzenleme:

sbayyigit

Altın Üye
Katılım
11 Aralık 2004
Mesajlar
409
Excel Vers. ve Dili
Ms Office Pro Plus 2019
Altın Üyelik Bitiş Tarihi
23-02-2026
virgülden sonraki ondalık kısmı

konu ile alakalı olduğunu düşünerek ayrıca bir başlık eklememek için sorunumu buraya yazmaya karar verdim umarım yanlış yapmamışımdır. sorunum ufak ama kafama takıldı, çözemedim.
amacım excelde hücre içersine yazdığım karakter 6,1235 ise hücreden çıktığımda olduğu gibi yazsın. Eğer 6,1230 ise 6,123 veya 6,1200 ise 6,12 gibi yazsın. yani ondalık kısmı en fazla 4 karakter olacak ama bu 4 sabit olmayıp değeri olmayan sıfırlar görünmeyecek. yani virgülden sonraki değer sıfır ise sadece tam sayı yazabilir. saygılarımla...
 

sbayyigit

Altın Üye
Katılım
11 Aralık 2004
Mesajlar
409
Excel Vers. ve Dili
Ms Office Pro Plus 2019
Altın Üyelik Bitiş Tarihi
23-02-2026
sorduğum soru çok mu karmaşık olmuş, yoksa gerçekten excelde çözümü mü yok acaba? saygılarımla.....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
H&#252;cre bi&#231;imlendirmeniz genel ise say&#305;lar zaten belirtti&#287;iniz &#351;ekilde olacakt&#305;r.
 

sbayyigit

Altın Üye
Katılım
11 Aralık 2004
Mesajlar
409
Excel Vers. ve Dili
Ms Office Pro Plus 2019
Altın Üyelik Bitiş Tarihi
23-02-2026
Hücre biçimlendirmeniz genel ise sayılar zaten belirttiğiniz şekilde olacaktır.
levent hocam ilgin için teşekkürler. Hücre biçimi genel olduğu durumda ben 1. yazdığımda sadece 1 yazıyor yani 1,00 yazması gerekiyor veya 100,10 yazdığımda ise 100,10 yazması gerekirken 100,1 yazıyor. yani rakam kaç olursa olsun virgülden sonra en az 2 en fazla 4 rakam olacak
 
Üst