Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Fonksiyonlar
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Fonksiyonlar Bir fonksiyonun, nasıl işlediğini veya aradığınız bir işleme uygun olup olmadığını bu başlık altında sorabilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 03-01-2017, 17:25   #1
brhmbl
Altın Üye
 
Giriş: 30/03/2011
Şehir: istanbul
Mesaj: 59
Excel Vers. ve Dili:
office 365 türkçe
Varsayılan Metnin İçinden Rakamı Alma (Parçaal / Soldan / Sağdan)

Merhaba arkadaşlar,

ekteki dosyada örneğim mevcut, normalde 200 - 1000 arası satırda çalışıyorum.
istediğim: A sütununda bulunan verinin içinden fiyatı çekip almak. düne kadar veriler "%0 0,00 TL 64,90 TL" şeklinde idi ama artık "%0 64,90 TL" veri geliyor yani birinci TL ibaresi kalkmış hücreler de var ve fonksiyon formülüm işe yaramıyor. C sütununda da kendi fonksiyon formülüm var.

burada daha önce hem makro hem fonksiyon düzeyinde çok sorunumu çözdüm, bunun da çözülmesi konusunda yardımlarınızı esirgemeyeceğinizi biliyorum. şimdiden teşekkür ediyorum herkese.
Eklenmiş Dosyalar
Dosya Türü: xlsx örnek.xlsx (9.9 KB, 19 Görüntülenme)
brhmbl Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 20:41   #2
Zeki Gürsoy
Uzman
 
Zeki Gürsoy kullanıcısının avatarı
 
Giriş: 30/12/2005
Şehir: Sakarya-Hendek
Mesaj: 3,454
Excel Vers. ve Dili:
Office 2016 (64 bit) - Türkçe
Varsayılan

Ekli dosyanızı inceleyin.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private reg As New RegExp

Function SayiAl(Hucre As Range, KacinciSayi As Byte) As Double
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:\d*\.)?(?:\d*\.)?\d+(,\d{0,})?"
    
    SayiAl = reg.Execute(Hucre).Item(KacinciSayi - 1)
End Function
Eklenmiş Dosyalar
Dosya Türü: xlsm Kopya_örnek.xlsm (15.6 KB, 11 Görüntülenme)
__________________

gursoyzeki@gmail.com




Zeki Gürsoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 20:45   #3
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 10,429
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Merhaba.

Konuyu FONKSİYONLAR bölümüne açtığınız için formül önerisinde bulunmak istedim.

Aşağıdaki formülü, 2'nci satırda bir hücreye uygulayın ve aşağı doğru kopyalayın.
İki tip veri için de sonuç alabilmeniz lazım.

Başta ve sondaki mavi kısım varken SAYI, yokken ..... TL şeklinde METİN sonuç alırsınız.
.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
=0+YERİNEKOY(KIRP(TEMİZ(PARÇAAL(A2;BUL(EĞER(UZUNLUK(KIRP(TEMİZ(YERİNEKOY(YERİNEKOY(A2;DAMGA(10);" ");"TL";" TL"))))-UZUNLUK(YERİNEKOY(KIRP(TEMİZ(YERİNEKOY(YERİNEKOY(A2;DAMGA(10);" ");"TL";" TL")));"TL";""))=2;" ";"TL");A2;1)+2;255)));" TL";"")
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosyaupload.com gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:06   #4
brhmbl
Altın Üye
 
Giriş: 30/03/2011
Şehir: istanbul
Mesaj: 59
Excel Vers. ve Dili:
office 365 türkçe
Varsayılan

Alıntı:
Zeki Gürsoy tarafından gönderildi Mesajı Görüntüle
Ekli dosyanızı inceleyin.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private reg As New RegExp

Function SayiAl(Hucre As Range, KacinciSayi As Byte) As Double
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:\d*\.)?(?:\d*\.)?\d+(,\d{0,})?"
    
    SayiAl = reg.Execute(Hucre).Item(KacinciSayi - 1)
End Function
Zeki Bey yardım ve desteğiniz için çok teşekkür ediyorum, bu makroyu biraz geliştirmemiz mümkün müdür? mesela siz 1. sayı, 2. sayı şeklinde gitmişsiniz ya, bana her zaman en sondaki sayı lazım.

mesela;

a2 hücresinden 64.90,
a4 hücresinden 49.25,
a6 hücresinden 2,599.00

sadece bunu sağlamak mümkün müdür?
brhmbl Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:13   #5
Zeki Gürsoy
Uzman
 
Zeki Gürsoy kullanıcısının avatarı
 
Giriş: 30/12/2005
Şehir: Sakarya-Hendek
Mesaj: 3,454
Excel Vers. ve Dili:
Office 2016 (64 bit) - Türkçe
Varsayılan

Elbette mümkün. Aşağıdaki fonksiyonu yapıştırp değiştirin.

Formülün içindeki "1" silin.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private reg As New RegExp

Function SayiAl(Hucre As Range) As Double
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:\d*\.)?(?:\d*\.)?\d+(?:,\d{0,})?"
    
    Set col = reg.Execute(Hucre)
    SayiAl = col.Item(col.Count - 1)
End Function
__________________

gursoyzeki@gmail.com




Zeki Gürsoy Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:14   #6
brhmbl
Altın Üye
 
Giriş: 30/03/2011
Şehir: istanbul
Mesaj: 59
Excel Vers. ve Dili:
office 365 türkçe
Varsayılan

Alıntı:
Ömer BARAN tarafından gönderildi Mesajı Görüntüle
Merhaba.

Konuyu FONKSİYONLAR bölümüne açtığınız için formül önerisinde bulunmak istedim.

Aşağıdaki formülü, 2'nci satırda bir hücreye uygulayın ve aşağı doğru kopyalayın.
İki tip veri için de sonuç alabilmeniz lazım.

Başta ve sondaki mavi kısım varken SAYI, yokken ..... TL şeklinde METİN sonuç alırsınız.
.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
=0+YERİNEKOY(KIRP(TEMİZ(PARÇAAL(A2;BUL(EĞER(UZUNLUK(KIRP(TEMİZ(YERİNEKOY(YERİNEKOY(A2;DAMGA(10);" ");"TL";" TL"))))-UZUNLUK(YERİNEKOY(KIRP(TEMİZ(YERİNEKOY(YERİNEKOY(A2;DAMGA(10);" ");"TL";" TL")));"TL";""))=2;" ";"TL");A2;1)+2;255)));" TL";"")


Ömer Bey cevabınız için çok teşekkür ediyorum, aslında makro istemek aklıma gelmedi, lütfen kusura bakmayın.

formülünüzü denedim, en baştaki "0+" varken #DEĞER hatası veriyor, onu kaldırınca da 64,90 (virgüllü) sonuç veriyor,en başa yine bir "yerinekoy" formülü ile sonuça ulaşıyorum ama sayıya dönmüyor, manuel sayıya çevir demem gerekiyor.

ekte durumu biraz anlatmaya çalıştım ama inşallah daha da karıştırmamışımdır.
Eklenmiş Dosyalar
Dosya Türü: xlsx örnek.xlsx (10.6 KB, 4 Görüntülenme)
brhmbl Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:22   #7
brhmbl
Altın Üye
 
Giriş: 30/03/2011
Şehir: istanbul
Mesaj: 59
Excel Vers. ve Dili:
office 365 türkçe
Varsayılan

Alıntı:
Zeki Gürsoy tarafından gönderildi Mesajı Görüntüle
Elbette mümkün. Aşağıdaki fonksiyonu yapıştırp değiştirin.

Formülün içindeki "1" silin.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private reg As New RegExp

Function SayiAl(Hucre As Range) As Double
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:\d*\.)?(?:\d*\.)?\d+(?:,\d{0,})?"
    
    Set col = reg.Execute(Hucre)
    SayiAl = col.Item(col.Count - 1)
End Function


Zeki Bey son bir değişiklik affınıza sığınarak;

benim ana çalışma kitabımda veri aldığım sayfa başka bir sayfa, bu sebeple midir bilmiyorum hata veriyor kod. kontrol edebilir misiniz?


Düzeltme: hata verdiğinde "reg As New RegExp" bu kısım seçili oluyor.

Bu mesaj en son " 03-01-2017 " tarihinde saat 21:28 itibariyle brhmbl tarafından düzenlenmiştir....
brhmbl Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:36   #8
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 10,429
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Bu kadar açıklama yerine keşke bir sütuna olması gereken nihai sonucu elle yazsaydınız.

Sanırım gönderdiğim formülün sonundaki mavi kısmı görmemişsiniz.

Yeni eklediğiniz örnek belgeye göre mavi kısım varken de yokken de formül hata vermiyor.

Sonucun virgüllü olması kısmını hiç anlamadım, siz 49,90 yerine 49.90 mı istiyorsunuz?

O zaman ya excel ayarlarından binlik/ondalık ayraçlarına ilişkin ayarı değiştireceksiniz ya da SAYI yerine METİN sonucu elde etmek istiyorsunuz gibi geliyor bana.

Dosyayı ekledim.
.
Eklenmiş Dosyalar
Dosya Türü: xlsx brhmbl.BRN.xlsx (11.0 KB, 12 Görüntülenme)
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosyaupload.com gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:41   #9
brhmbl
Altın Üye
 
Giriş: 30/03/2011
Şehir: istanbul
Mesaj: 59
Excel Vers. ve Dili:
office 365 türkçe
Varsayılan

Ömer Bey,

B sütununa olması gereken sonucu elle yazmıştım ama sanırım görememişsiniz.

başta ve sondaki mavi kısımları gördüm, onları silince 49,90 TL sonucuna ulaşıyorum.

sanırım problem binlik/ondalık ayraçlarda. ben kullandığımız muhasebe programı sebebiyle sistem ayraçlarını kullanmıyorum, binlikte virgülü, ondalıkta noktayı kullanıyorum. belki de problemin ana sebebi budur.

evet ben 49.90 olsun istiyorum.

düzeltme: evet problem benim binlik/ondalık ayraçları kullanmamam imiş, şu anda formülünüz çalışıyor. çok teşekkür ediyorum.
brhmbl Çevrimdışı   Alıntı Yaparak Cevapla
Eski 03-01-2017, 21:41   #10
Zeki Gürsoy
Uzman
 
Zeki Gürsoy kullanıcısının avatarı
 
Giriş: 30/12/2005
Şehir: Sakarya-Hendek
Mesaj: 3,454
Excel Vers. ve Dili:
Office 2016 (64 bit) - Türkçe
Varsayılan

Hızlı çalışması için referans eklemiştim. Fonksiyonu aşağıdaki gibi de kullanabilirsiniz.

"reg As New RegExp" kısmını silin.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Function SayiAl(Hucre As Range) As Double
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:\d*\.)?(?:\d*\.)?\d+(?:,\d{0,})?"
    
    Set col = reg.Execute(Hucre)
    SayiAl = col.Item(col.Count - 1)
End Function
__________________

gursoyzeki@gmail.com




Zeki Gürsoy Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 01:13


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım -- Beylikdüzü mali müşavir - Beylikdüzü mali müşavir - Lingerie - Dyeing Machine - Karton Bardak- Karton Bardak- Çorlu Dil Konuşma Terapisti- Çorlu Dil Konuşma Terapisti- Çorlu Konuşma Terapisti- Çorlu Konuşma Terapisti- Çorlu Özel Eğitim- Site Yönetimi- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Çorlu- Çorlu Araç Takip- Rampa- Çorlu İnternet Sitesi- Çorlu Sürücü Kursu- Şişli Avukat- Çorlu Etüt- İstanbul Botanik- Çorlu Sigorta- Kağıt Bardak- Kağıt Bardak- Çorlu Havuz- Çorlu Havuz- Çorlu Perde Yıkama- Okul Danışmanlık- ADR'li taşıma kabı imalatı- Mekanik Tesisat- Çorlu Grafik Tasarım- Çorlu Sondaj- Çorlu Etüt- Futbol Cafe- Beylikdüzü Temizlik- Çorlu Kurs- Çorlu Ders- İzmit Mimar- Hurda Bakır Kablo- Hurda Bakır Kablo- Çorlu Pronet- Çorlu Yönetim- Çorlu Apartman Yönetimi- Çorlu Marangoz- Çorlu Avukat- Çorlu Su Arıtma- Çorlu Kompresör- İstanbul İnşaat-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden