Ctrl + E

yasinkaratas0359

Altın Üye
Katılım
29 Temmuz 2020
Mesajlar
39
Excel Vers. ve Dili
Microsoft® Excel® 2016 MSO (Sürüm 2303 Derleme 16.0.16227.20202) 32 bit TR
Altın Üyelik Bitiş Tarihi
12-08-2025
Merhabalar;
Ctrl + E İle Çalışıyorum;
Fakat Her Hücrede Doğru Sonucu Alamıyorum. Yardımlarınız İçin Şimdiden Teşekkürler;
Saygılar

Ödeme Metni

Tutar

Yemek Bedeli 5,246.92

5,246.92

Ödeme Yapıldı 3,987.98

3,987.98

Benzin Alımı Gideri 2,000.00

2,000.00

5,465 TL Ödeme

5,465 TL Ödeme

Sevim Ödeme 6,800 TL

6,800 TL

Sigortalara 19,654 Ödeme Yapıldı

19,654 Ödeme Yapıldı

Vergi 5,467.90

5,467.90

 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sanırım metin içindeki sayıları almaya çalışıyorsunuz. Her hücredeki yazım şekli farklı. Ctrl+E ile ilk hücredeki referansa göre işlem yaptığı için sonraki referansa uymayan hücrelerde hatalı kısımları alıyor. Bunun yerine aşağıdaki fonksiyonu kullanabilirsiniz.

Not: Ctrl+E, sistem ayarlarınızdaki ondalık ve binlik ayırıcı farklılığından da çalışmıyor olabilir.

236285

=SAYIYAÇEVİR(PARÇAAL(A2;MİN(EĞERHATA(BUL({0;1;2;3;4;5;6;7;8;9;".";","};A2);"A"));TOPLA(EĞER(UZUNLUK(A2)>UZUNLUK(YERİNEKOY(A2;{0;1;2;3;4;5;6;7;8;9;".";","};""));UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;{0;1;2;3;4;5;6;7;8;9;".";","};""));0))))

236284
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben verdiğiniz örneği şu şekilde yapınca sonuca ulaştım.

Levent beyin paylaştığı görsele göre;

Önce B2 hücresine 5246,92 yazdım.
Sonra B5 hücresine 5465 yazdım.
Sonra B7 hücresine 19654 yazdım.

Son olarak CTRL+E yapınca diğerlerini düzgün şekilde ayırdı.

Alternatif olarak aşağıdaki KTF'yi de kullanabilirsiniz.

Kodu boş bir modüle kopyaladıktan sonra B2 hücresine =Get_Numbers(A2) yazarak sonuca gidebilirsiniz.

C++:
Option Explicit

Function Get_Numbers(My_Rng As Range) As Double
    Application.Volatile True
   
    With VBA.CreateObject("VBScript.RegExp")
        .Pattern = "[^0-9.,]+"
        .Global = True
        If .Test(My_Rng.Value) Then
            Get_Numbers = Replace(Replace(.Replace(My_Rng.Value, ""), ",", ""), ".", ",")
        End If
    End With
End Function


236290
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu da yeni fonksiyonlarla OFİS 365 için alternatif çözüm.

LAMBDA fonksiyonu kullanılmıştır.



236294
 

Ekli dosyalar

Üst