• DİKKAT

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

Kolondaki sayı ve rakamları ayırıp sonucu rakam olarak yazmak

Katılım
7 Ağustos 2007
Mesajlar
3
Excel Vers. ve Dili
VBA
Merhaba arkadaşlar,

Benim şöyle bir sorunum var, bir bankada çalışıyorum ve sürekli raporlamalar yapmak durumundayım.

Şu an üzerinde çalıştığım ve uzun vadeli bir çözüm yolu bulmaya çalıştığım konu; belli başlı kredi kullandırımlarının ortalama vadesini hesaplamak. Fakat sistemden çektiğim rapor ekteki dosyadan da görülebileceği üzere "3 yıl" , "5 ay gibi" ifadeler ile yazıyor vadeleri. Halbuki benim bunları hesaplamam için bu kolonda hepsinin ya yıl olarak, veya ay veyahutta gün olarak ve rakamla yazmasını sağlayabilmek. O yüzden, yapmak istediğim şey Vade kolonunda yer alan ve yazı halinde olan yazıyı rasyonel sonuç alabilmek için rakamsal hale çevirmem gerek. Yani mesela; hepsi aynı türden ve rakam olsun istiyorum. "3 years" yazan yere 3 yılda olan gün sayısını yani; 1095 yazsın, gene "18 months yerin yanındaki kolona" 340 gün yazdırmak. Sık sık hazırladığım raporlardan biri de bu olduğu için uzun vadeli bir çözüm arıyorum. Yardımcı olabilirseniz çok memnun olurum.

Teşekkürler.

Ek'teki dosyada da anlatım mevcuttur.
 
Merhaba,

Örnek dosyayı incelermisiniz..
 
Ellerinize sağlık, 2 saatir kafa patlatıyorum hiç bir şey yapamadım... Yardımlarınız için çok teşekkür ederim.
 
Merhaba arkadaşlar,

Benim şöyle bir sorunum var, bir bankada çalışıyorum ve sürekli raporlamalar yapmak durumundayım.

Şu an üzerinde çalıştığım ve uzun vadeli bir çözüm yolu bulmaya çalıştığım konu; belli başlı kredi kullandırımlarının ortalama vadesini hesaplamak. Fakat sistemden çektiğim rapor ekteki dosyadan da görülebileceği üzere "3 yıl" , "5 ay gibi" ifadeler ile yazıyor vadeleri. Halbuki benim bunları hesaplamam için bu kolonda hepsinin ya yıl olarak, veya ay veyahutta gün olarak ve rakamla yazmasını sağlayabilmek. O yüzden, yapmak istediğim şey Vade kolonunda yer alan ve yazı halinde olan yazıyı rasyonel sonuç alabilmek için rakamsal hale çevirmem gerek. Yani mesela; hepsi aynı türden ve rakam olsun istiyorum. "3 years" yazan yere 3 yılda olan gün sayısını yani; 1095 yazsın, gene "18 months yerin yanındaki kolona" 340 gün yazdırmak. Sık sık hazırladığım raporlardan biri de bu olduğu için uzun vadeli bir çözüm arıyorum. Yardımcı olabilirseniz çok memnun olurum.

Teşekkürler.

Ek'teki dosyada da anlatım mevcuttur.

Dosyanız ekte.

.
 
Örnek örnektir.

Ben Sayın espiyonajl ve Sayın yurttaş gibi yetenekli olmadığım için, en basit yolu seçtim.

A Sütununu seçip metni sütunlara böl dedim.
years, months ve day ler B sütununda rakamlar A sütununda kaldı.

Daha basit bir EĞER(IF) ile işi bitirdim :)

Kod:
=EĞER(B2="";0;EĞER(B2="YEARS";A2*365;EĞER(B2="months";A2*30;A2)))
=IF(B2="";0;IF(B2="YEARS";A2*365;IF(B2="months";A2*30;A2)))
 
Örnek örnektir.

Ben Sayın espiyonajl ve Sayın yurttaş gibi yetenekli olmadığım için, en basit yolu seçtim.

A Sütununu seçip metni sütunlara böl dedim.
years, months ve day ler B sütununda rakamlar A sütununda kaldı.

Daha basit bir EĞER(IF) ile işi bitirdim :)

Kod:
=EĞER(B2="";0;EĞER(B2="YEARS";A2*365;EĞER(B2="months";A2*30;A2)))
=IF(B2="";0;IF(B2="YEARS";A2*365;IF(B2="months";A2*30;A2)))

Necdet bey,

Pratik, kolay ve anlaşılır çözümler; her zaman tercihim olmuştur.

Bu nedenle, sizin çözümünüz bana göre daha güzel...

.
 
Merhaba arkadaşlar,
Benzer bir sorun;
A sütununda yer alan verinin B ve C sütununa almak istediğim kısmını ek çalışmada belirttim.Ancak, renk veya kalınla yazılmış olması bizim için bir ayraç değil yani verilerimizin tamamı aynı renk ve kalınlıkta...Makro ile yapmaya çalışıyorum.Teşekkür ederim...
 
Merhaba,

Aşağıdaki kodları dener misiniz?

Kod:
Sub RenkAyir()
Application.ScreenUpdating = False
Range("B2:C65536").ClearContents
For i = 2 To [A65536].End(3).Row
    For j = 1 To Len(Cells(i, "A"))
        With Cells(i, "A").Characters(j, 1).Font
            If .ColorIndex = 3 Then Cells(i, "B") = Cells(i, "B") & Mid(Cells(i, "A"), j, 1)
            If .ColorIndex = 5 Then Cells(i, "C") = Cells(i, "C") & Mid(Cells(i, "A"), j, 1)
        End With
    Next j
Next i
Application.ScreenUpdating = True
End Sub
 
...renk veya kalınla yazılmış olması bizim için bir ayraç değil yani verilerimizin tamamı aynı renk ve kalınlıkta...

Üstad, sanırım dikkatinizden kaçtı; renk bizim için bir ayraç değil, yani verilerimizin tamamı aynı renk.Ben anlatımı kolaylaştırmak için o kısımları renklendirmiştim...
 
Hmmm.

Tüh o kadar da uğraşmıştım :)

Peki, o zaman neyin alınacağı nasıl belli olacak?
 
Sevgili Yurttas ve Necdet, yardımlarınızı için sizlere de çok teşekkür ederim. Sayenizde aynı soru için elimde 3 farklı alternatif çözüm oldu :)
 
Merhaba,

Örnek dosyayı incelermisiniz. İstediğiniz bu mu?
 
İlk denemelerime göre sanırım sorunumu çözecek.Teşekkür ederim...

Aynı işlemi makro ile yapabilir miyiz?
Not:Sadece sayısal değerleri alan formül yeterli geliyor.İsmi almasak da olur...
 
Merhaba,

Uzman olmak zor işmiş :) Önce problemi çözeceksiniz, anlayacaksınız, sonra çözüm önerisinde bulunacaksınız :)


Kod:
Sub Bul_Cek_Al()
Application.ScreenUpdating = False
[B2:C650].ClearContents
Dim i, Bul, Aranan, Sat, Uzunluk As Integer
Sat = 1
For i = 2 To [a65536].End(3).Row
    Bul = Application.WorksheetFunction.Find(" ", Cells(i, "A"))
    Aranan = Left(Cells(i, "a"), Bul - 1)
    Bas = Application.WorksheetFunction.Find(Aranan, Cells(i, "A"), Bul + 1)
    Sat = Sat + 1
    Cells(Sat, "B") = Mid(Cells(i, "A"), Bul + 1, Bas - Bul - 2)
    Baslama = Bas + Bul - 1
    Bit = Application.WorksheetFunction.Find(" ", Cells(i, "A"), Baslama) - 1
    Uzunluk = Bit - Baslama + 1
    Cells(Sat, "C") = Mid(Cells(i, "A"), Baslama, Uzunluk)
Next i
Application.ScreenUpdating = True
End Sub
 
Necdet Yeşertener;290774' Alıntı:
Uzman olmak zor işmiş :)
Dedik ya üstad; kolay olsa biz de uzman idik...:):):)Zaman ve emeğin için çok teşekkür ederim.
 
Güle güle kullanınız Sayın Ali Akgül :)
 
Geri
Üst