• DİKKAT

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

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
 
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
 
Instr fonksiyonunuda kullanabilirsiniz.
 
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.
 
Karşısınıza çıkan, hatanın ne olduğunu söylemeyin. Böyle daha zevkli oluyor heralde :)
 
'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.
 
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.
 
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
 
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.
 
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]
 
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:
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...
 
sorduğum soru çok mu karmaşık olmuş, yoksa gerçekten excelde çözümü mü yok acaba? saygılarımla.....
 
H&#252;cre bi&#231;imlendirmeniz genel ise say&#305;lar zaten belirtti&#287;iniz &#351;ekilde olacakt&#305;r.
 
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
 
Geri
Üst