• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Metinden aynı formatta sayı çekmek

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,105
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
Merhabalar
Aşağıdaki metinlerdeki sayıları sutünlara nasıl alabilirim.



Metal: 1.559mKristal: 467.946Deuterium: 363.085Kaynaklar: 2.39m

Metal: 1.109mKristal: 426.574Deuterium: 219.183Kaynaklar: 1.755m

Metal: 1.109mKristal: 426.522Deuterium: 219.158Kaynaklar: 1.754m

Metal: 1.524mKristal: 588.563Deuterium: 280.457Kaynaklar: 2.393m

Metal: 1.489mKristal: 428.466Deuterium: 203.553Kaynaklar: 2.121m

Metal: 345.390Kristal: 173.819Deuterium: 51.024Kaynaklar: 570.233

Metal: 1.352mKristal: 592.119Deuterium: 241.344Kaynaklar: 2.185m


Metal: Kristal: Deuterium: Kaynaklar:
1559000 467946 363085 2390000
1109000 426574 219183 1755000
 
En kolay yolu;

1) "Metni Sütunlara Çevir" metodunu kullanmak (Ayraç olarak ":" işareti kullanılacak)

2) Daha sonra "Bul/değiştir" ile "mKristal , "Deuterium", "Kaynaklar" ... kelimelerini ortadan kaldıracaksınız....

.
 
Unutmuşum
makro ile yapılacak
cevap için teşekkürler
nokta ve m (milyon) işi karıştırıyor.
 
Makroyla yapmak istiyorsanız, bence en kolayı "Regular Expressions" kullanmanız olur... Forumda arama yapabilirsiniz...


2 No'lu mesajımda belirttiğim yönteme ilişkin animasyon aşağıdaki linktedir.



.
 
Son düzenleme:
"Regular Expressions" ile çözüm ektedir...

.
 

Ekli dosyalar

Hocam m (milyonlar) sorun var
2.39m
239 olmuş
doğrusu 2390000
 
"m" ifadesi "milyon" demek ... anlamamıştım...

O zaman, şöyle deneyin,

Kod:
Function SplitData(myRange As Range, i As Integer)
'   Haluk - 05/03/2020
'   sa4truss@gmail.com

    Set regExp = CreateObject("VBScript.RegExp")
    
    regExp.IgnoreCase = True
    regExp.Global = True
    
    regExp.Pattern = "Metal: (.+)Kristal: (.+)Deuterium: (.+)Kaynaklar: (.+)"
    If regExp.Test(myRange.Text) Then
        Set objMatches = regExp.Execute(myRange.Text)
        tempData = Replace(objMatches.Item(0).Submatches(i), ".", ",")
        If Right(tempData, 1) = "m" Then tempData = Replace(tempData, "m", "") * 1000000
        SplitData = tempData
    End If
    
    Set objMatches = Nothing
    Set regExp = Nothing
End Function

.
 
Teşekkürler
 
Metal: 1.559mKristal: 467.946Deuterium: 363.085Kaynaklar: 2.39m
Metal: 1.109mKristal: 426.574Deuterium: 219.183Kaynaklar: 1.755m
Metal: 1.109mKristal: 426.522Deuterium: 219.158Kaynaklar: 1.754m
Metal: 1.524mKristal: 588.563Deuterium: 280.457Kaynaklar: 2.393m
Metal: 1.489mKristal: 428.466Deuterium: 203.553Kaynaklar: 2.121m
Metal: 345.390Kristal: 173.819Deuterium: 51.024Kaynaklar: 570.233
Metal: 1.352mKristal: 592.119Deuterium: 241.344Kaynaklar: 2.185m

Bu konuyu formül ile çözmek mümkün mü?
 
Verilerin A1 Hücresinden başladığı kabul edilmişdir.
B1 Hücresine kopyalayınız.Aşağı doğru çoğaltınız.
Kod:
=ARA(9,99999999999999E+307;--SOLDAN(YERİNEKOY(YERİNEKOY(A1;"Metal:";"");".";",");SATIR($A$1:$A$1027)))
C1 Hücresine kopyalayınız.Aşağı doğru çoğaltınız.
Kod:
=ARA(9,99999999999999E+307;--SOLDAN(YERİNEKOY(YERİNEKOY(KIRP(PARÇAAL($A1;MBUL("Kristal:";$A1);UZUNLUK($A1)));"Kristal:";"");".";",");SATIR($A$1:$A$1027)))
D1 Hücresine kopyalayınız.Aşağı doğru çoğaltınız.
Kod:
=ARA(9,99999999999999E+307;--SOLDAN(YERİNEKOY(YERİNEKOY(KIRP(PARÇAAL($A1;MBUL("Deuterium:";$A1);UZUNLUK($A1)));"Deuterium:";"");".";",");SATIR($A$1:$A$1027)))
E1 Hücresine kopyalayınız.Aşağı doğru çoğaltınız.
Kod:
=ARA(9,99999999999999E+307;--SOLDAN(YERİNEKOY(YERİNEKOY(KIRP(PARÇAAL($A1;MBUL("Kaynaklar:";$A1);UZUNLUK($A1)));"Kaynaklar:";"");".";",");SATIR($A$1:$A$1024)))
 
Sayın Çıtır çok teşekkür ederim. İzniniz varsa birşey daha öğrenmek istiyorum.
9,99999999999999E+307 mantığını söyleyebilir misiniz?
 
Excel 15 basamakdan sonra sayının sonuna 0 ekleyerek E+ ile başlayan bir sayı ekler bu o sayıdır.Yani excele yazılabileçek en son pozitif sayıdır.Excelin sayı duyarşığı 15 basamakdır.
 
Çok özür dileyerek; bu sayıyı yazarak ne elde etmek istiyoruz. Yani bize nasıl bir kolaylık sağlıyor?
 
Çekinmeden sorabilirsiniz.Bildiğimiz kadar açıklamaya çalışırım.
ilgil hücrede Excelde yazılabileçek enbüyük sayıya kadar olan sayı var mı? onu arıyoruz.
 
Tamam da ara formülünün ilk basamağı "Aranan Değer" kısmıdır. Biz burada ne aradığımız belli değil ki? Biz neyi arıyoruz. herhangi bir sayı mı?
 
Aslında; söz konusu bahsedilen "en büyük sayıya" yakın olan sayıyı arıyoruz.... Sonuçta; ilgili metin parçası içerisindeki bulabileceğimiz en büyük sayıyı buluyoruz.

LOOKUP - ARA fonksiyonu aradığımız "en büyük sayıyı" bulamazsa, idare edelim diye bize bulabileceği en yakın sayıyı buluyor. Hiç sayı bulamazsa, uygun bir hata mesajı verir.

.
 
Evet .... bu soruda, zaten amacımız; aradığımız ilgili metin parçasında, kriterlere göre "herhangi bir" sayı arıyoruz.

.
 
Çok teşekkür ederim.
 
Geri
Üst