"Excelde vb kodları kullanarak Sayıları Rakama çev

sezerkanbul
04-02-2015, 17:14   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
3 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

 

Arkadaşlar merhaba, aşağıdaki kodu excelde f11 ile insert+modül içine ekliyorum kod çalışıyor ör 33987 = otuz üç bin dokuz yüz seksen yedi şeklinde ancak şöyle bir isteğim var:

3.4356 şeklinde ki sayıları şu şekilde : üç dört bin üç yüz elli altı şeklinde yazdırmam gerekiyor. noktadan sonra mecbur 4 hane var

kodun şu anki hali bana: otuz dört bin üç yüz elli altı şeklinde veriyor. 

Yardımcı olabilir misiniz?

Function Yaz$(sayi)

Dim b$(9)
Dim Y$(9)
Dim m$(4)
Dim v(15)
Dim c(3)

b$(0) = ""
b$(1) = "Bir"
b$(2) = "İki"
b$(3) = "Üç"
b$(4) = "Dört"
b$(5) = "Beş"
b$(6) = "Altı"
b$(7) = "Yedi"
b$(8) = "Sekiz"
b$(9) = "Dokuz"

Y$(0) = ""
Y$(1) = "On"
Y$(2) = "Yirmi"
Y$(3) = "Otuz"
Y$(4) = "Kırk"
Y$(5) = "Elli"
Y$(6) = "Altmış"
Y$(7) = "Yetmiş"
Y$(8) = "Seksen"
Y$(9) = "Doksan"

m$(0) = "Trilyon"
m$(1) = "Milyar"
m$(2) = "Milyon"
m$(3) = "Bin"
m$(4) = ""

On Error Resume Next
a$ = Str(sayi)

If Left$(a$, 1) = " " Then pozitif = 1 Else pozitif = 0
  a$ = Right$(a$, Len(a$) - 1)
For X = 1 To Len(a$)
  If (Asc(Mid$(a$, X, 1)) > Asc("9")) Or (Asc(Mid$(a$, X, 1)) _
      < Asc("0")) Then GoTo hata
Next X

If Len(a$) > 15 Then GoTo hata
a$ = String(15 - Len(a$), "0") + a$

For X = 1 To 15
  v(X) = Val(Mid$(a$, X, 1))
Next X

s$ = ""
For X = 0 To 4
  c(1) = v((X * 3) + 1)
  c(2) = v((X * 3) + 2)
  c(3) = v((X * 3) + 3)
  If c(1) = 0 Then
    E$ = ""
  ElseIf c(1) = 1 Then
    E$ = "Yüz"
  
  Else
    E$ = b$(c(1)) + "Yüz"
  End If
  E$ = E$ + Y$(c(2)) + b$(c(3))
  If E$ <> "" Then E$ = E$ + m$(X)
  If (X = 3) And (E$ = "BirBin") Then E$ = "Bin"
  s$ = s$ + E$
Next X

If s$ = "" Then s$ = "Sıfır"
If pozitif = 0 Then s$ = "Eksi" + s$

Yaz$ = s$
GoTo tamam
hata: Yaz$ = "Hata"
tamam:
End Function

çhip10line
05-02-2015, 10:03   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 114
864 mesaj
Kayıt Tarihi:Kayıt: Eyl 2012

formülü tam olarak nasıl kullandığını anlayamadım ama şöyle basit bir çözüm önerisi sunabilirim.. sayıları "=" ile başka bir hücreye taşı ve o hücrenin ondalık basamak sayısı değerini sıfır olarak seç 3.4356 olarak yazdığın sayı 34356 olarak yazacaktır, doğal olarak formülde çalışacaktır.

sezerkanbul
05-02-2015, 11:25   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
3 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

Teşekküerler kod visual basic ve excelin içine f11 klavye fonksiyon tuşu ile modül olarak aktarılıyor, formül çalışır durumda 34356 sayısını şu şekilde veriyor: otuz dört bin 3 yüz elli altı, halbuki ben 3.4356 şeklinde ve şöyle : üç nokta 4 bin üç yüz elli altı şeklinde istiyorum noktadan sonra hep 4 basamak.. ayrıca sayı 3.0001 ise ben: üç nokta sıfır sıfır sıfır bir şelinde yapmaya çalışıyorum ssonuç alamadım...

çhip10line
05-02-2015, 11:32   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 114
864 mesaj
Kayıt Tarihi:Kayıt: Eyl 2012

yazıya çevirdiği zaman arada "nokta" ifadesininde olmasını istiyorsun..

sezerkanbul
05-02-2015, 15:50   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
3 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

yukarıdaki yazan koda bağlı çalışan aşağıdaki kod sorumun cevabı verdi: alıntı: qazw7
Function Yaz2(sayi)

If InStr(1, sayi, ".") > 0 Then

a = Split(sayi, ".")
For i = 0 To UBound(a)
If i > 0 Then b = b + " nokta "
b = b + Yaz$(a(i))
Next i

Else
b = Yaz$(sayi)
End If

Yaz2 = b
End Function

Turhost