Excel'de gereksiz sembollerin kaldırılması ve sayıların korunması

Kerem Aydın·9 Temmuz 2026·⏱4 dk

Excel hücresinde yalnızca rakamları bırakmak için dizi formülü (yeni sürümler için) veya MID ve ISNUMBER ile birlikte TEXTJOIN işlevini kullanın. Büyük tablolar için Text.Select işleviyle Power Query eklentisini uygulamak daha etkilidir; tek seferlik hızlı temizlik için ise basit bir VBA makrosu kullanabilirsiniz. Bu yöntemler, "Ürün Kodu №123-A" gibi verileri saf sayıya 123 dönüştürmenizi sağlar.

Verilerin hazırlanması ve yöntem seçimi

Çalışmaya başlamadan önce veri hacmini ve Excel sürümünüzü belirleyin. Birkaç hücreyi işlemek gerekiyorsa formüller uygundur. Binlerce satır için formüller dosyanın çalışma hızını yavaşlatabileceğinden Power Query kullanmak daha iyidir.

Önemli: Rakamları çıkarırken baştaki sıfırlar (örneğin 007 kodunda) sayısal biçime dönüştürülürken genellikle kaybolur. Sıfırlar önemliyse sonucu metin biçiminde bırakın.

Yöntem 1: Rakamları çıkarmak için formüller

Bu yöntem makroları etkinleştirmeyi gerektirmez ve doğrudan çalışma sayfası hücrelerinde çalışır.

Excel 365 ve Excel 2019+ için

Modern sürümlerde, bulunan rakamları birleştiren TEXTJOIN işlevi kullanılır.

  1. Kirli verilerin A2 hücresinde olduğunu varsayalım.
  2. Aşağıdaki formülü B2 hücresine yapıştırın:
    =TEXTJOIN("");TRUE;IF(ISNUMBER(--MID(A2;SEQUENCE(LEN(A2));1));MID(A2;SEQUENCE(LEN(A2));1);""))
    ```
    *Not: Excel'in Türkçe sürümünde bağımsız değişken ayırıcısı noktalı virgül `;`, İngilizce sürümünde virgül `,` olabilir.*
3.  Tam olarak bir **sayı** elde etmek istiyorsanız (hesaplamalar için), formülü `DEĞER` (veya `VALUE`) işlevi içine alın:
    
```excel
    =DEĞER(TEXTJOIN("");TRUE;IF(ISNUMBER(--MID(A2;SEQUENCE(LEN(A2));1));MID(A2;SEQUENCE(LEN(A2));1);"")))
    ```

### Eski Excel sürümleri için (2010–2016)
Bu sürümlerde `TEXTJOIN` işlevi yoktur. Çözüm daha karmaşıktır ve VBA aracılığıyla kullanıcı tanımlı bir işlev oluşturmayı veya yardımcı sütunlar kullanmayı gerektirir, bu da kullanışsızdır. Dosyayı `.xlsm` biçimine güncellemeniz ve **Yöntem 3 (Makro)** kullanmanız veya verileri **Power Query**'ye yüklemeniz önerilir.

## Yöntem 2: Power Query ile temizleme (Büyük tablolar için önerilir)

Power Query, düzenli veri temizliği için en güvenilir araçtır. Dosyayı formüllerle aşırı yüklemez.

1.  Verileri içeren aralığı seçin.
2.  **Veri** sekmesine gidin → **Tablo/Aralıktan**.
3.  Power Query düzenleyicisi açılacaktır. Temizlenmesi gereken sütunu seçin.
4.  **Sütun Ekle** sekmesinde **Özel Sütun** seçeneğini belirleyin.
5.  Yeni sütun için bir ad girin (örneğin, `SadeceRakamlar`) ve formülü yazın:
    
```powerquery
    Text.Select([SütunAdınız], {"0".."9"})
    ```
    *(Sağdaki listeden üzerine tıklayarak `[SütunAdınız]` kısmını gerçek sütun adıyla değiştirin).*
6.  **Tamam** düğmesine basın. Artık yeni sütunda yalnızca rakamlar var.
7.  Gerekirse veri türünü **Tam Sayı** veya **Ondalık Sayı** olarak değiştirin.
8.  Temizlenmiş tabloyu Excel'e geri aktarmak için **Kapat ve Yükle** düğmesine basın.

Text.Select işlevi, ikinci parantez içinde listelenen karakterleri bırakır. {"0".."9"} aralığı 0'dan 9'a kadar tüm rakamlar anlamına gelir. Tüm harfler, boşluklar ve noktalama işaretleri otomatik olarak kaldırılacaktır.

Yöntem 3: Anında temizlik için VBA Makrosu

Yeni sütunlar oluşturmadan seçili bir aralığı hızla temizlemek gerekiyorsa makro kullanın.

  1. VBA düzenleyicisini açmak için Alt + F11 tuşlarına basın.
  2. Menüden Insert → Module seçeneğini belirleyin.
  3. Aşağıdaki kodu yapıştırın:
    Sub KeepOnlyDigits()
        Dim cell As Range
        Dim i As Integer
        Dim rawText As String
        Dim cleanText As String
        
        For Each cell In Selection
            If Not cell.HasFormula Then
                rawText = CStr(cell.Value)
                cleanText = ""
                For i = 1 To Len(rawText)
                    If Mid(rawText, i, 1) Like "[0-9]" Then
                        cleanText = cleanText & Mid(rawText, i, 1)
                    End If
                Next i
                ' Eğer sayı istiyorsanız, aşağıdaki satırın yorumunu kaldırın:
                ' If cleanText <> "" Then cell.Value = CDbl(cleanText) Else cell.Value = ""
                
                ' Metin olarak bırak (baştaki sıfırları korur):
                cell.Value = cleanText
            End If
        Next cell
    End Sub
    ```
4.  Düzenleyiciyi kapatın, çalışma sayfasındaki gerekli hücreleri seçin.
5.  `Alt + F8` tuşlarına basın, `KeepOnlyDigits` seçeneğini belirleyin ve **Çalıştır** düğmesine basın.

## İşleme yöntemlerinin karşılaştırılması

<div class="table-container"><table style="border-collapse: collapse; width: 100%; margin: 16px 0;"><thead><tr><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Yöntem</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Zorluk</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Performans</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Baştaki sıfırları korur</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">En uygun olduğu durum</th></tr></thead><tbody><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>Formüller</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Orta</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Düşük (büyük verilerde)</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Evet (sayıya dönüştürülmezse)</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Küçük tablolar, tek seferlik görevler</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>Power Query</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Orta</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Yüksek</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Evet (veri türü değişene kadar)</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Düzenli raporlar, binlerce satır</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>VBA Makrosu</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Yüksek*</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Çok yüksek</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Evet (kodda varsayılan olarak)</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Seçimlerin &quot;anında&quot; hızlı temizliği</td></tr></tbody></table></div>


*\*Kodun bir kez ayarlanması gerekir.*

## Sık yapılan hatalar

*   **Negatif işaretin kaybolması.** Standart rakam çıkarma yöntemleri eksi işaretini (`-`) kaldırır. Metinde `-150` gibi sayılar varsa, sonuç `150` olacaktır. İşareti korumak için ilk karakteri kontrol eden daha karmaşık bir mantık gerekir.
*   **Formüllerde #AD? hatası.** Excel'in eski sürümlerinde (2019 öncesi) `TEXTJOIN` veya `SEQUENCE` işlevlerini kullanırsanız ortaya çıkar.
*   **Tarihe dönüşüm.** Temizlemeden sonra, sonuç bir tarihe benziyorsa (örneğin `12.05`), Excel hücre biçimini otomatik olarak değiştirebilir. Verileri yapıştırmadan önce biçimi zorunlu olarak "Metin" veya "Genel" olarak ayarlayın.

## SSS

**Formül kullanmadan rakamlar dışındaki her şeyi silebilir miyim?**
Evet, formülsüz en hızlı yol makro kullanmaktır (Yöntem 3) veya verileri Not Defteri'ne kopyalayıp harfleri silmek için değiştirme özelliğini (Ctrl+H) kullanmaktır (bu zahmetlidir). Alternatif olarak çevrimiçi araçlar kullanılabilir, ancak bu gizli veriler için daha az güvenlidir.

**Rakamlar boşluklarla ayrılmışsa (örneğin "100 200") nasıl çıkarılır?**
Önerilen yöntemler bunları tek bir sayı olan `100200` halinde birleştirir. Bunları ayırmak istiyorsanız, boşluk konumlarını arayan daha karmaşık bir formüle veya temizlemeden önce sütunları ayırıcıya göre bölerek Power Query'de işlemeye ihtiyaç duyulur.

**Hücrede hiç rakam yoksa ne olur?**
Formüller boş bir dize `""` döndürür. Makro da hücreyi boş bırakır. Bu, `EĞERHATA` gibi hata işleme işlevleri kullanıldığında hesaplamalarda hataya neden olmayan doğru bir davranıştır.