Özellik ikonu

Format

İndirme izni yok

Genel Bakış

Format (Format işlevi), bir sayıyı, tarihi ya da metni verdiğiniz biçim desenine göre biçimlendirip metin olarak döndüren VBA işlevidir. Binlik ayırıcı, ondalık basamak, yüzde, baştaki sıfırlar, gün ve ay adları gibi görünümleri koddan üretmek için kullanılır. Sonuç her zaman metindir; hesaplamada kullanılacak değeri değiştirmez, yalnızca gösterimini oluşturur.

Söz dizimi​

İşlevin genel yazımı şöyledir:
VBA
Format(Expression, [Format], [FirstDayOfWeek], [FirstWeekOfYear])
  • Expression: Biçimlendirilecek sayı, tarih ya da metin. Zorunludur.
  • Format: Biçim deseni; hazır bir ad (ör. "Percent") ya da özel desen (ör. "#,##0.00"). İsteğe bağlıdır; atlanırsa değer biçimsiz biçimde metne çevrilir.
  • FirstDayOfWeek: Haftanın ilk gününü belirleyen sabit. İsteğe bağlıdır; varsayılanı vbUseSystemDayOfWeek (0), yani sistem ayarıdır. Diğer değerler: vbSunday (1), vbMonday (2) ... vbSaturday (7).
  • FirstWeekOfYear: Yılın ilk haftasını belirleyen sabit. İsteğe bağlıdır; varsayılanı vbUseSystem (0). Diğerleri: vbFirstJan1 (1), vbFirstFourDays (2), vbFirstFullWeek (3). Yalnızca hafta numarası içeren (ww) desenlerde etkili olur.
Dönüş değeri: Variant türünde bir metindir. Expression Null ise sonuç da Null olur; bu sonucu doğrudan String değişkene atarsanız hata alırsınız.

Hazır (adlandırılmış) biçimler​

Format bağımsız değişkenine aşağıdaki adları yazabilirsiniz. Sonuçlar Windows bölge ayarlarına göre üretilir:
  • General Number: Sayıyı binlik ayırıcısız gösterir.
  • Currency: Para birimi simgesi ve binlik ayırıcıyla gösterir.
  • Fixed: En az bir tam basamak ve iki ondalık basamak gösterir.
  • Standard: Binlik ayırıcılı ve iki ondalık basamaklı gösterir.
  • Percent: Değeri 100 ile çarpar ve yüzde işareti ekler.
  • Scientific: Bilimsel (üstel) gösterim kullanır.
  • Yes/No, True/False, On/Off: Sıfır dışındaki değer için ilk, sıfır için ikinci sözcüğü yazar.
  • General Date, Long Date, Medium Date, Short Date: Tarihi sistemin genel, uzun, orta ve kısa tarih düzenine göre yazar.
  • Long Time, Medium Time, Short Time: Saati uzun, 12 saatlik ve 24 saatlik kısa düzene göre yazar.

Özel sayı ve metin simgeleri​

Özel desen yazarken ondalık ayırıcı için nokta, binlik ayırıcı için virgül kullanılır; bu, Türkçe Windows'ta bile böyledir. Sonuç ise bölge ayarına göre (ör. 1.234,50) görünür.
  • 0: Rakam yer tutucusudur; karşılığında rakam yoksa 0 yazar. Format(5, "000") sonucu 005 olur.
  • #: Rakam yer tutucusudur; karşılığında rakam yoksa hiçbir şey yazmaz.
  • . (nokta): Ondalık ayırıcının yerini belirler.
  • , (virgül): Binlik ayırıcı ekler.
  • %: Değeri 100 ile çarpar ve yüzde işareti ekler.
  • E+ / E-: Bilimsel gösterim üretir.
  • "metin" ya da \ : Tırnak içindeki metni ya da ters bölüden sonraki karakteri olduğu gibi yazar. VBA dizesi içinde tırnak çift yazılır.
  • ; (noktalı virgül): Bölümleri ayırır: pozitif;negatif;sıfır;Null. Örneğin ikinci bölüm negatif sayıların görünümünü belirler.
  • @ ve &: Metin için karakter yer tutucusudur; @ karakter yoksa boşluk, & ise hiçbir şey yazmaz.
  • < ve >: Metni küçük ya da büyük harfe çevirir.

Tarih ve saat simgeleri​

Tarih ve saat desenlerinde şu simgeler kullanılır:
  • d, dd: Ayın günü (tek ya da iki haneli).
  • ddd, dddd: Gün adı (kısa ya da tam).
  • m, mm: Ay numarası (tek ya da iki haneli).
  • mmm, mmmm: Ay adı (kısa ya da tam).
  • yy, yyyy: İki ya da dört haneli yıl.
  • q: Yılın çeyreği; ww: yılın haftası.
  • h, hh: Saat.
  • n, nn: Dakika. VBA'da dakika için n kullanmak, m simgesiyle ay karışıklığını önler.
  • s, ss: Saniye.
  • AM/PM: 12 saatlik düzende öğleden önce ya da sonra göstergesi.
Gün ve ay adları Windows bölge ayarının diline göre gelir; Türkçe ayarda Pazartesi ya da Ocak gibi Türkçe adlar üretilir.

1. Tutar ve oranı biçimlendirme​

Sayfada ürün tutarları ve KDV oranları var. Makro, tutarı binlik ayırıcılı ve iki ondalıklı, oranı ise bir ondalıklı yüzde olarak D ve E sütunlarına metin biçiminde yazar. Kodu Geliştirici > Visual Basic (Developer > Visual Basic) penceresinde Ekle > Modül (Insert > Module) ile açtığınız standart modüle yapıştırın.
VBA 17 satır
Option Explicit

Sub SayiBicimle()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet
    ' Sonuç sütunlarını metin yapıyoruz; Excel yazılan metni yeniden sayıya çevirmesin
    ws.Range("D2:E7").NumberFormat = "@"

    For i = 2 To 7
        ' Binlik ayırıcılı, iki ondalıklı tutar
        ws.Cells(i, 4).Value = Format(ws.Cells(i, 2).Value, "#,##0.00")
        ' Bir ondalıklı yüzde
        ws.Cells(i, 5).Value = Format(ws.Cells(i, 3).Value, "0.0%")
    Next i
End Sub
Format
Formülünü incelemek için bir hücre seçin.
ABCDE
1ÜrünTutarOranTutar (Metin)Oran (Metin)
2Laptop24999,920%24.999,9020,0%
3Klavye85020%850,0020,0%
4Monitör7450,518%7.450,5018,0%
5Yazıcı429918%4.299,0018,0%
6Kitap125,751%125,751,0%
7Ekmek12,58%12,508,0%
Tutar BiçimiExcelDepo v1.0.0
Makro çalışınca D sütununda tutarlar "#,##0.00" desenine göre metne dönüşür; ilk ürün için sonuç 24.999,90, ikinci ürün için 850,00 olur. E sütunundaki "0.0%" deseni oranı 100 ile çarpıp yüzde işareti ekler; ilk satırda 20,0%, son satırda 8,0% görünür. Ayırıcı karakterlerin nokta ya da virgül olması bilgisayarınızın bölge ayarına bağlıdır.

2. Tarihten gün ve ay adı üretme​

Sayfada personelin işe giriş tarihleri yer alır. Makro her tarihten gün adını, "ay yıl" biçimini ve noktalı kısa tarihi üretip C, D ve E sütunlarına yazar. Kodu standart bir modüle yapıştırın.
VBA 19 satır
Option Explicit

Sub TarihBicimle()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet
    ' Sonuçlar metin olarak kalsın
    ws.Range("C2:E6").NumberFormat = "@"

    For i = 2 To 6
        ' Gün adı (Pazartesi gibi, bölge ayarına göre)
        ws.Cells(i, 3).Value = Format(ws.Cells(i, 2).Value, "dddd")
        ' Ay adı ve dört haneli yıl
        ws.Cells(i, 4).Value = Format(ws.Cells(i, 2).Value, "mmmm yyyy")
        ' Gün.ay.yıl biçimi
        ws.Cells(i, 5).Value = Format(ws.Cells(i, 2).Value, "dd.mm.yyyy")
    Next i
End Sub
Format
Formülünü incelemek için bir hücre seçin.
ABCDE
1Personelİşe GirişGünAy ve YılKısa Tarih
2Ayşe Yılmaz15.03.2021PazartesiMart 202115.03.2021
3Mehmet Demir04.11.2019PazartesiKasım 201904.11.2019
4Zeynep Kaya21.07.2022PerşembeTemmuz 202221.07.2022
5Can Öztürk09.01.2020PerşembeOcak 202009.01.2020
6Elif Şahin30.05.2023SalıMayıs 202330.05.2023
Personel TarihleriExcelDepo v1.0.0
İlk personel için "dddd" deseni gün adını (Pazartesi), "mmmm yyyy" deseni ay adı ve yılı (Mart 2021), "dd.mm.yyyy" deseni ise iki haneli gün ve ayla tarihi (15.03.2021) üretir. Son satırda aynı desenler Salı, Mayıs 2023 ve 30.05.2023 sonuçlarını verir. Ad dili Windows bölge ayarına göre belirlenir.

3. Özel desenle kod ve işaretli fark​

Sayfada şube bazında sipariş numaraları ve stok farkları var. Makro, numarayı baştaki sıfırlarla "SIP-" önekli bir koda çevirir; farkı da pozitif, negatif ve sıfır için ayrı bölümleri olan bir desenle yazar. Kodu standart bir modüle yapıştırın.
VBA 16 satır
Option Explicit

Sub OzelDesen()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet
    ws.Range("D2:E8").NumberFormat = "@"

    For i = 2 To 8
        ' Sabit önek ve beş haneli numara (baştaki sıfırlarla)
        ws.Cells(i, 4).Value = Format(ws.Cells(i, 2).Value, """SIP-""00000")
        ' Üç bölüm: pozitif; negatif; sıfır
        ws.Cells(i, 5).Value = Format(ws.Cells(i, 3).Value, "+#,##0;-#,##0;""Sıfır""")
    Next i
End Sub
Format
Formülünü incelemek için bir hücre seçin.
ABCDE
1ŞubeSipariş NoStok FarkıSipariş KoduFark Gösterimi
2Ankara7120SIP-00007+120
3İzmir125-35SIP-00125-35
4Bursa30480SIP-03048Sıfır
5Adana421500SIP-00042+1.500
6Konya981-1200SIP-00981-1.200
7Antalya158SIP-00015+8
8Kayseri200770SIP-20077Sıfır
Sipariş KodlarıExcelDepo v1.0.0
Ankara satırında sipariş kodu SIP-00007, fark gösterimi +120 olur; sıfır adet için üçüncü bölüm devreye girer ve Bursa satırında Sıfır yazılır. Negatif farklarda ikinci bölüm kullanılır; İzmir satırı -35 sonucunu verir. Desendeki "SIP-" ifadesi tırnak içinde olduğu için olduğu gibi yazılır, 00000 ise numarayı beş haneye tamamlar.

Kullanırken dikkat edin​

  • Sonuç metindir: Format her zaman metin döndürür. Sonucu toplama ya da karşılaştırma gibi işlemlerde kullanacaksanız özgün sayıyı koruyun. Biçimli metni hücreye yazarken Excel onu yeniden sayıya ya da tarihe çevirebilir; bunu önlemek için hücrenin NumberFormat özelliğini önceden "@" yapın.
  • Yalnızca görünüm istiyorsanız: Hücredeki değeri değiştirmeden sadece görünümü değiştirmek istiyorsanız Range.NumberFormat özelliğini kullanın. Böylece hücre sayı olarak kalır ve formüllerde sorunsuz çalışır. Format ise etiket, kod, rapor metni ya da ileti oluştururken uygundur.
  • Desen ve bölge ayarı: Desen içinde ondalık ayırıcı için nokta, binlik ayırıcı için virgül yazılır; sonuçtaki gerçek karakterleri Windows bölge ayarı belirler. Aynı kod, farklı bölge ayarlı bilgisayarlarda farklı ayırıcı ve ay adı üretebilir. Çıktının her yerde aynı olması gerekiyorsa bu farkı hesaba katın.
  • Dakika için n kullanın: Tarih desenlerinde m hem ay hem dakika anlamına gelebilir. Saat desenlerinde dakikayı kesin olarak belirtmek için hh:nn gibi n simgesini kullanın.
  • Yuvarlama davranışı: Biçim deseninde ondalık basamak sayısı azaldığında değer yuvarlanarak gösterilir. Round işlevi bankacı yuvarlaması kullanırken Format genellikle yarım değeri yukarı yuvarlar; iki işlevin sonuçları yarım değerlerde farklı çıkabilir.
  • Null değeri: Expression Null ise Format Null döndürür. Bu sonucu String türünde bir değişkene atarsanız çalışma zamanı hatası oluşur; değişkeni Variant tanımlayın ya da önce Null denetimi yapın.
  • İlgili konular:
    • Range.NumberFormat ve NumberFormatLocal: Hücrenin sayı biçimini ayarlar.
    • FormatNumber, FormatCurrency, FormatPercent, FormatDateTime: Belirli türler için hazır biçimlendirme işlevleri.
    • CStr ve Str: Değeri biçimsiz olarak metne çevirir.
    • Round: Sayıyı yuvarlar.
    • METNEÇEVİR: Çalışma sayfasında aynı işi yapan işlev (Text); VBA'da Application.WorksheetFunction.Text ile çağrılabilir.
    • Hücreleri Biçimlendir: Sayı sekmesindeki özel biçim kodlarını gösteren iletişim kutusu (Format Cells).
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
13
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst