sayı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sayı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

6 Haziran 2025 Cuma

Excelde sayıyı yazıyla yazdırma

Yeni sürüm

06/06/2025: Kodlar güncellendi

Option Explicit
Function YAZIYLA(sayi As Variant) As String
' Sayıyı yazıyla yazar
'
' Mesut Akcan
' https://www.mesutakcan.blogspot.com
' makcan@gmail.com
'
' 23 Nisan 2004
' Güncelleme: 5 Haziran 2025

Dim birler(9) As String, onlar(9) As String, buyukSayi(4) As String
Dim basamak(1 To 15) As Byte, grup(1 To 3) As Byte
Dim sayiMetni As String, grupMetni As String
Dim sonuc As String
Dim negatif As Boolean
Dim i As Byte, j As Byte 'index


If (Not IsNumeric(sayi)) Or (Len(sayi) > 15) Then ' Sayı değilse veya 15 basamaktan büyükse hata
	YAZIYLA = "#HATA!"
Exit Function
End If

If sayi < 0 Then
	negatif = True 'Sayı negatif
sayi = Abs(sayi)
End If

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

' Onlar basamağı
onlar(0) = ""
onlar(1) = "On"
onlar(2) = "Yirmi"
onlar(3) = "Otuz"
onlar(4) = "Kırk"
onlar(5) = "Elli"
onlar(6) = "Altmış"
onlar(7) = "Yetmiş"
onlar(8) = "Seksen"
onlar(9) = "Doksan"

' Büyük sayılar
buyukSayi(0) = "Trilyon "
buyukSayi(1) = "Milyar "
buyukSayi(2) = "Milyon "
buyukSayi(3) = "Bin "
buyukSayi(4) = ""

sayiMetni = Right(String(15, "0") & CStr(Fix(sayi)), 15) ' Sayıyı metne çevir ve boşlukları kaldır

' 1'den 15'e kadar döngü
' karakterleri tek tek al ve sayıya çevir ve diziye aktar
For i = 1 To 15
	basamak(i) = CByte(Mid(sayiMetni, i, 1))
Next

sonuc = "" ' Sonuç metni

' sayı metnini 3'erli 5 gruba ayır ve her grubu yazıya çevir
For i = 0 To 4
	For j = 1 To 3 'gruptaki yüzler, onlar, birler basamakları
	grup(j) = basamak((i * 3) + j)
	Next
	
	Select Case grup(1) ' Yüzler basamağı
		Case 0 ' sıfır ise
			grupMetni = "" ' Yüzler basamağı metni boş
		Case 1 ' 1 ise
			grupMetni = "Yüz" ' Yüzler basamağı metni "Yüz"
		Case Else ' 2-9 arası ise
			grupMetni = birler(grup(1)) & "Yüz" ' Yüzler basamağı metni "İkiYüz", "ÜçYüz" vb.
		End Select
		
		grupMetni = grupMetni & onlar(grup(2)) & birler(grup(3)) ' Onlar ve birler basamağını ekle
		
		If grupMetni <> "" Then
			grupMetni = grupMetni & buyukSayi(i) ' Büyük sayıları ekle
			If (i = 3) And (grupMetni = "BirBin ") Then
				grupMetni = "Bin" ' "BirBin" durumunu düzelt
			End If
		End If
	sonuc = sonuc & grupMetni ' Sonucu birleştir
Next
sonuc = Trim(sonuc)
If sonuc = "" Then
	sonuc = "Sıfır"
ElseIf negatif Then
	sonuc = "Eksi " & sonuc
End If
YAZIYLA = sonuc
End Function 

YAZIYLA fonksiyonunu kullanma

  • Kodları kopyalayın.
  • Excelde dosya açıkken ALT+F11 tuşlarına basın (yada Şerit menüden Geliştirici / Visual Basic tıklayın)
  • VBA Editöründe menüden Insert / Module tıklayın.
  • Menüden Edit / Paste ile ya da Ctrl+V ile kopyalanan kodları yapıştırın.
  • Artık YAZIYLA fonksiyonunu diğer Excel fonksiyonları gibi hücrelerde kullanabilirsiniz.

Eski sürüm

Excelde sayıyı yazıyla yazdırmak için gerekli fonksiyonu oluşturan VBA kodları
Kodlar aşağıdaki excel dosya içinde de mevcuttur.
VBA kodlarını görmek için dosyayı açtıktan sonra ALT+F11'e basın.
İndir YAZIYLA.XLS 130 Kb

YAZIYLA fonksiyonunu tüm excel dosyalarında kullanma

Bu işlemler bir defa yapılacaktır.
yaziyla.xls dosyasını açın.
Oku1, Oku2 ve Test sayfalarını silin (Sayfaya geçin Düzen/Sayfayı sil)
Dosya / Farklı kaydet'i tıklayın
Kayıt Türü listesinden "Microsoft Office Excel Eklentisi (*.xla)" seçin
Kayıt Yeri 'nde "Addins" belirir.
Kaydet'i tıklayın
Dosyayı kapatın

Yeni bir excel dosyası ya da varolan bir excel dosyanızı açın
Araçlar / Eklentiler' i tıklayın
Burada "Kullanılabilir eklentiler"de "Yazıyla" göreceksiniz. Yanındaki kareyi tıklayıp seçin.
Tamam'ı tıklayın.
Artık her excel dosyasında YAZIYLA fonksiyonunu başka bir işlem yapmadan rahatlıkla kullanabilirsiniz.
Option Explicit
Function YAZIYLA(sayi As Variant) As String
' Sayıyı yazıyla yazar

' Mesut Akcan
' https://www.mesutakcan.blogspot.com
' makcan@gmail.com

' 23 Nisan 2004
' Güncelleme: 31 Mart 2011

Dim b(9) As String, y(9) As String, m(4) As String, a As String
Dim v(15), c(3)
Dim pozitif As Byte, x As Byte
Dim s As String, e As String

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) = ""

a = Str(Int(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
YAZIYLA = s
GoTo tamam
hata:
YAZIYLA = "Hata"
tamam:
End Function

19 Kasım 2023 Pazar

Excel VBA: Belirtilen aralıktaki çift, tek veya tüm sayıların sayısı

Yayınlama: 4/4/2014
Güncelleme: 19/11/2023
Eğer Excel'de kullanabileceğiniz bir özel fonksiyon olsaydı, "SayiSay" fonksiyonu şu şekilde işlev görebilirdi:

=SayiSay(hücreler; sayiCesidi)

Bu fonksiyon, belirtilen hücre aralığındaki sayıların sayısını belirli bir kriter veya sayı türüne göre sayan bir formül sağlar. "hücreler" parametresi, sayıları içeren hücre aralığını temsil ederken, "sayiCesidi" parametresi ise sayılardan hangi türleri saymak istediğinizi belirler.

Örneğin:

Eğer "sayiCesidi" parametresi 1 olarak belirlenirse, fonksiyon belirtilen hücre aralığındaki tek sayıların sayısını verir.
Eğer "sayiCesidi" parametresi 2 olarak belirlenirse, fonksiyon çift sayıların sayısını verir.
Eğer "sayiCesidi" parametresi belirtilmez veya 0 olarak belirlenirse, fonksiyon hücre aralığındaki tüm sayıların sayısını verir.
Bu örnek formül, belirli bir hücre aralığındaki sayıların çeşidine göre sayım yapmanıza olanak tanıyan özelleştirilmiş bir Excel fonksiyonunu temsil etmektedir. Ancak, bu fonksiyon Excel'in standart fonksiyonları arasında yer almamaktadır, bu nedenle böyle bir fonksiyonu kullanabilmek için aşağıdaki kodlar gibi özel bir VBA (Visual Basic for Applications) makro yazmanız gerekecektir.

Fonksiyonun kullanımı

hücreler olarak: "A1:E4" gibi çok sayıda hücre
sayiCesidi olarak:
Tüm sayılar için 0
Tek sayı için 1
Çift Sayı için 2
girin.

Örnek 1: =SayiSay("A1:E5")
"A1:E5" aralığındaki tüm sayıların sayısını verir.
Örnek 2: =SayiSay("A1:E5";0)
"A1:E5" aralığındaki tüm sayıların sayısını verir.
Örnek 3: =SayiSay("A1:E5";1)
"A1:E5" aralığındaki tek sayıların sayısını verir.
Örnek 4: =SayiSay("A1:E5";2)
"A1:E5" aralığındaki çift sayıların sayısını verir.

Kodları eklemek için:
Excelde ALT+F11'e basın.
Menüden Insert / Module tıklayın.
Aşağıdaki kodları ekleyin
Option Explicit
'Blog sayfam	 : https://mesutakcan.blogSpot.com
'Youtube Kanalım : https://www.youtube.com/mesutakcan
'WhatsApp kanalım: https://www.whatsapp.com/channel/0029Va5h4cQ0LKZLuB9Dpy23
'Telegram kanalım: https://t.me/mesutakcan
Enum eSayiCesidi
	tumSayilar = 0
	tekSayilar = 1
	ciftSayilar = 2
End Enum

Function SayiSay(hucreler As Range, _
	Optional sayiCesidi As eSayiCesidi = tumSayilar) As Long
	
	Dim hucre As Range
	Dim sayiAdedi As Long
	
	' belirtilen tüm hücreler
	For Each hucre In hucreler
		' hücre değeri sayı ise
		If IsNumeric(hucre.Value) Then
			'sayıları say
			If (sayiCesidi = tumSayilar) Or _
				(sayiCesidi = tekSayilar And hucre.Value Mod 2 <> 0) Or _
				(sayiCesidi = ciftSayilar And hucre.Value Mod 2 = 0) Then
					sayiAdedi = sayiAdedi + 1
			End If
		End If
	Next
	
	SayiSay = sayiAdedi
End Function

23 Haziran 2023 Cuma

Excelde hücreye kesirli sayı girme

Yayınlama: 19/7/2016
Güncelleme: 23/6/2023
Excel hücresine 3/4 gibi bir kesirli sayı girmeye çalıştığınızda girilen veri o yılın "3 Nisan" tarihi olarak algılanıp hücreyi tarih formatına dönüştürür.

Eğer amacınız hücreye 3/4 girip bu şekilde kalmasını sağlamaksa, birkaç yol denenebilir.

1. yol:

Hücreye girilen değerin girildiği gibi görünmesi için önce ' (tırnak) işareti koyun.
'3/4 gibi.
Tırnak işareti hücrede görünmeyecektir. Bu bir metindir sayı olarak işlem görmez.

2. yol:

Önce hücre biçimini kesir olarak değiştirin.
Sonra hücreye kesirli değeri girin. 3/4 gibi ya da 2 3/4 (2 tam 3/4)

3. yol:

Hücre biçimlendirmeye gerek kalmadan hücreye tam sayılı kesir olarak girin
3/4 için 0 3/4 ( 0 boşluk 3/4 )
5 tam 5/16 için  5 5/16

2. ve 3. yol ile girilen veriler sayı olarak işlem görür.






12 Eylül 2022 Pazartesi

Autolisp ile sıralı numara yazdır

Bu AutoLisp dosya AutoCAD'de sıralı numara yazar. Numara etrafına daire çizer.
Artan/Azalan ve başlangıç sayısı seçenekleri vardır.

Github Proje Sayfası:

Yükleme:

Uygulamayı yüklemek için;

  • APPLOAD komutunu verin
  • numbering.lsp dosyasını seçip LOAD butonunu tıklayın.

Çalıştırma:

  • AutoCAD komut satırında NY yazıp Entere basın.
  • Komut parametrelerini girin ve numara yazılacak konumları belirleyin.

Artış değeri olarak negatif değer verirseniz numaralar azalarak değişir.

2 Aralık 2015 Çarşamba

Excel: Sayıları virgülden hizalama

Küsuratlı ve tam sayılardan oluşan karışık listeniz varsa bunları virgülden(küsurattan) hizalı olarak hücre içinde yaslayabilirsiniz. Böylece sayıları okumak ve karşılaştırmak daha kolay olacaktır.
  • Hizalanacak hücreleri seçin
  • CTRL+1 (Hücre Özellikleri) / Sayı / İsteğe Uyarlanmış yolunu takip edin
  • Tür kısmına ,???? yazın. Sistem özelliklerinde küsuru ayırmak için virgül yerine .(nokta) kullanılıyorsa .???? kullanın.
  • Tamam tıklayın.
 

21 Kasım 2015 Cumartesi

Word: Bul Değiştir ile bulunan sayının başına 0 ekleme

Word'de metin içinde bulunan sayıların başına 0 eklemek istersek Word'ün bul ve değiştir özelliğinden faydalanabiliriz.

Bul ve Değiştir'e kısayoldan erişmek için klavyeden CTRL+H tuşlarına basın.
Tüm seçenekler açık değilse Tüm seçenekler butonunu tıklayın.

Aranan kısmına:
<([0-9])*([0-9])>
Yeni değer kısmına:
0^&
yazın. Joker karakter kullan seçeneğini seçin.
Sonra tümünü değiştir ile bulunan tüm sayıların başına 0 eklenir.
Tek tek değiştirmek isterseniz Sonrakini bul ve Değiştir butonlarını kullanabilirsiniz.


<([0-9])*([0-9])>
joker karakterleri bir rakam ile başlayıp bir rakam ile biten metinleri bulur.
0^&
joker karakterlerinin açıklaması ise:
^&
kodu aranan metini temsil eder. 0 ise bulunanın başına 0 eklemek içindir.

5 Nisan 2014 Cumartesi

EXCEL VBA: Belirtilen aralıktaki çift ya da tek sayıların toplamı

Excelde kullanabileceğiniz özel bir fonksiyon
=SayiTopla(hücreler,tip)
Bu formül belirtilen hücrelerdeki çift ya da tek sayıların toplamını verir

hücreler olarak: "A1:E4" gibi çok sayıda hücre.
tip olarak:
Tek sayı için: 1
Çift Sayı için: 0

Örnek: =SayiTopla("A1:E5";1)
"A1:E5" aralığındaki tek sayıların toplamını verir

Kodları eklemek için:
Excelde ALT+F11 e basın.
Menüden Insert / Module tıklayın.
Aşağıdaki kodları ekleyin
Function SayiTopla(hucreler As Range, tip As Integer)
' tip:
' 0: Çift sayi
' 1: Tek sayi
Dim arrayA As Variant
Dim i As Integer, j As Integer, artan As Integer
Dim sayi As Variant
arrayA = hucreler.Value

For i = 1 To hucreler.Rows.Count
 For j = 1 To hucreler.Columns.Count
  sayi = arrayA(i, j)
  artan = sayi Mod 2
  If artan = tip Then
   SayiTopla = SayiTopla + sayi
  End If
 Next
Next
End Function

10 Nisan 2011 Pazar

Excelde YAZIYLATL fonksiyonu

Verilen sayıyı yazıyla yazdırır. 123 için Yüzyirmiüç gibi.
Sonuna TL ve Kr ekler. Parasal değerler için uygundur.
Açıklamalar ve örnekler ve fonksiyon VBA kodları dosya içinde mevcuttur.

İndir: YAZIYLATL.XLS (126 Kb)