Power Query ile YKB Döviz Kurlarını Listeleme, M kodları kullanarak Yapı ve Kredi bankasının web sitesinden kur bilgisini yazdırmayı öğretmektedir.
Power Query ile YKB Döviz Kurlarını Listeleme (Detaylı M Kodu Rehberi)
Döviz kurları, dalgalı yapıları nedeniyle takibi dikkat gerektiren finansal göstergelerdir. Özellikle ticari faaliyetler, yatırımlar veya kişisel tasarruflar dövize endeksli olduğunda, anlık ve geçmiş kur verilerine erişim büyük önem taşımaktadır. Bu tür verilerin web sitelerinden manuel olarak kopyala-yapıştır yöntemiyle toplanması ise zaman alıcı ve hataya açık bir süreç olabilmektedir. Ancak, Microsoft Excel'in etkili araçlarından biri olan Power Query (Veri Al ve Dönüştür) ve bu aracın kullandığı güçlü M dili sayesinde, bu işlemler önemli ölçüde otomatikleştirilebilmektedir.Bu kapsamlı içerikte, M kodları kullanılarak Yapı Kredi Bankası'nın web sitesinden canlı döviz kurlarının (örneğin EUR, USD, Altın/XAU) otomatik olarak Excel'e nasıl çekilebileceği ve bu verilerin zaman içinde bir "Master" tablosunda nasıl arşivlenebileceği, her bir kod satırı açıklanarak adım adım anlatılmaktadır. Bu yöntemle, sadece anlık kurlara ulaşmakla kalmayıp, aynı zamanda geçmişe dönük bir kur arşivi de oluşturulabilecektir.
Neden Yapı Kredi? Neden Power Query?
Yapı Kredi Bankası: Türkiye'nin önde gelen bankalarından biri olması sebebiyle, döviz kuru verileri için genellikle güvenilir ve güncel bir kaynak olarak kabul edilmektedir. (Ancak, web'den veri çekme işlemlerinin her zaman belirli riskler taşıdığı ve bu konuya makalenin ilerleyen bölümlerinde değinileceği unutulmamalıdır.)Power Query: Excel 2016 ve üzeri sürümler ile Microsoft 365 aboneliklerinde yerleşik olarak sunulan bu araç, veri alma, temizleme ve dönüştürme konularında çok yönlü bir çözüm sunar. Hem kullanıcı arayüzü üzerinden hem de M dili ile kod yazarak karmaşık veri işleme operasyonları gerçekleştirilebilir. Önemli bir avantajı da, sistem bir kez kurulduktan sonra verilerin tek bir işlemle güncellenebilmesidir.
Başlamadan Önce Bilinmesi Gerekenler (Önemli Uyarılar)
- Excel Sürümü: Bu içerikteki adımların uygulanabilmesi için Excel 2016, Excel 2019, Excel 2021 veya Microsoft 365 aboneliğine sahip olunması gerekmektedir. Power Query, bu sürümlerde "Veri" sekmesi altında yer almaktadır.
- Web'den Veri Çekmenin Dinamikleri (CSS Seçicileri): Kullanılacak ilk M kodu, Yapı Kredi Bankası'nın web sayfasının HTML yapısındaki belirli verileri çekmek amacıyla CSS seçicileri kullanmaktadır. Finansal kurumlar, web sitelerinin yapılarını periyodik olarak güncelleyebilirler. Eğer web sayfasının yapısı değişirse, kullanılan CSS seçicileri hedeflerini bulamayabilir ve sorgu hata üretebilir. Bu durumda, sorgu içerisindeki seçicilerin güncellenmesi gerekebilir. Bu, web'den veri çekme yönteminin en hassas yönlerinden biridir; ancak bu durum çözümsüz değildir. Makalenin ilerleyen kısımlarında bu konuya değinilecektir.
- Temel Power Query Bilgisi: Tüm adımlar detaylı olarak anlatılacak olsa da, Power Query arayüzüne genel bir aşinalık, işlemlerin daha verimli bir şekilde takip edilmesini sağlayacaktır. Eğer bu araca tamamen yabancı olan kullanıcılar varsa, öncelikle "Power Query Nedir?" gibi temel bir bilgilendirme içeriğine göz atılması faydalı olabilir.
Bölüm 1: Yapı Kredi'den Anlık Döviz Kurlarını Çekme (İlk M Kodu Analizi)
Bu bölümde, Yapı Kredi Bankası'nın "Döviz Bilgileri" sayfasından anlık işlem zamanını ve belirlenen döviz kurlarını (örneğin EUR, USD, XAU) çeken ilk M kodu incelenecektir.Adım 1: Power Query Editörünü Açma ve Yeni Sorgu Oluşturma
- Excel'de "Veri" sekmesine gidin.
- "Veri Al" (Get Data) > "Diğer Kaynaklardan" (From Other Sources) > "Boş Sorgu" (Blank Query) seçeneğine tıklayın.
- Power Query Editörü açılacaktır.
Adım 2: İlk M Kodunu Yapıştırma
Açılan Power Query Editörü'nde, "Görünüm" (View) sekmesinden "Gelişmiş Düzenleyici"yi (Advanced Editor) açın. Mevcut tüm metni silin ve aşağıdaki M kodunu yapıştırın:
Kod:
let
a = Web.BrowserContents("https://www.yapikredi.com.tr/yatirimci-kosesi/doviz-bilgileri"),
b = Html.Table(a, {{"IslemZamani", ".currency-label > SPAN:nth-child(1):nth-last-child(1)"}}),
islemZamani= b{0}[IslemZamani],
d = Html.Table(a, {{"Column1", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(1)"}, {"Column2", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(2)"}, {"Column3", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(3)"}, {"Column4", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(4)"}, {"Column5", "DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR > :nth-child(5)"}}, [RowSelector="DIV.table-radius:nth-child(11) > TABLE.table.table-striped.table-bordered.table-control > * > TR"]),
e = Table.PromoteHeaders(d, [PromoteAllScalars=true]),
f = Table.RemoveColumns(e,{"Döviz Açıklaması", "Değişim"}),
g = Table.SelectRows(f, each ([Döviz Cinsi] = "EUR" or [Döviz Cinsi] = "USD" or [Döviz Cinsi] = "XAU")),
h = Table.AddColumn(g, "IslemZamani", each islemZamani),
i = Table.TransformColumnTypes(h,{{"IslemZamani", type datetime}})
in
i
Adım 3: M Kodu Adımlarının Detaylı Açıklaması
Bu M kodu adımlarının her biri aşağıda detaylandırılmıştır:- `a = Web.BrowserContents("Canlı Döviz Kurları"),`
Bu satır, belirtilen Yapı Kredi web sayfasının tüm HTML içeriğini indirir ve 'a' adlı değişkene atar. Bu işlem için aktif bir internet bağlantısının olması şarttır. - `b = Html.Table(a, {{"IslemZamani", ".currency-label > SPAN:nth-child(1):nth-last-child(1)"}}),`
İndirilen HTML içeriğinden ('a' değişkeni) bir tablo çıkarılmaya çalışılır. Kullanılan CSS seçicisi (`.currency-label > SPAN:nth-child(1):nth-last-child(1)`), web sayfasındaki "İşlem Zamanı" bilgisinin bulunduğu alanı hedefler. Bu bilgi, elde edilen kur verilerinin hangi zamana ait olduğunu gösterir. - `islemZamani= b{0}[IslemZamani],`
Bir önceki adımda elde edilen tablonun ilk satırındaki (`{0}`) "IslemZamani" sütununda yer alan değer alınır ve 'islemZamani' adlı değişkene atanır. Bu, genellikle "GG.AA.YYYY SS:DD" formatında bir metin olacaktır. - `d = Html.Table(a, {{"Column1", "... TR > :nth-child(1)"}, ...}, [RowSelector="... > TR"]),`
Bu adım, ana döviz tablosunun HTML içeriğinden çekilmesini sağlar.- `DIV.table-radius:nth-child(11) > TABLE...`: Bu ve benzeri uzun CSS seçiciler, Yapı Kredi web sayfasındaki döviz kurlarının bulunduğu spesifik tabloyu ve bu tablonun içindeki satırları (`RowSelector`) ile sütunları (örneğin `:nth-child(1)` birinci sütunu ifade eder) hedeflemektedir.
- CSS Seçicileri ve Kırılganlık: CSS seçicileri, web sayfasındaki belirli HTML elemanlarını hedeflemek için kullanılır. Ancak, web sitelerinin yapısı zamanla değişebilir. Bu seçiciler, bir web sayfasındaki verinin tam konumunu belirten adresler gibidir. Eğer web sitesinin tasarımında veya yapısında bir değişiklik olursa (örneğin, banka web sitesini güncellerse), bu adresler geçerliliğini yitirebilir ve veri çekme işlemi başarısız olabilir. Bu nedenle, bu kısım sorgunun en hassas noktasıdır ve hata vermeye en açık bölümüdür. Eğer sorgu ileride çalışmazsa, büyük olasılıkla bu seçicilerin güncellenmesi gerekecektir. (Çözüm önerileri için "Sorun Giderme ve İpuçları" bölümüne bakılabilir.)
- `e = Table.PromoteHeaders(d, [PromoteAllScalars=true]),`
Çekilen tablonun ilk satırında yer alan değerler ("Döviz Cinsi", "Alış (TL)" vb.) sütun başlıkları olarak ayarlanmaktadır. - `f = Table.RemoveColumns(e,{"Döviz Açıklaması", "Değişim"}),`
Tabloda ihtiyaç duyulmayan "Döviz Açıklaması" ve "Değişim" gibi sütunlar kaldırılır. Böylece daha sade bir tablo elde edilmektedir. - `g = Table.SelectRows(f, each ([Döviz Cinsi] = "EUR" or [Döviz Cinsi] = "USD" or [Döviz Cinsi] = "XAU")),`
Bu adımda, sadece "EUR" (Euro), "USD" (Amerikan Doları) ve "XAU" (Altın) para birimlerine ait satırlar tutulur, diğerleri filtrelenir. Bu filtreleme kriteri, kullanıcıların ihtiyaçlarına göre farklı döviz cinslerini içerecek şekilde değiştirilebilir. Örneğin, "GBP" (İngiliz Sterlini) de eklenmek istenirse ilgili koşul `... or [Döviz Cinsi] = "GBP"))` şeklinde genişletilebilir. - `h = Table.AddColumn(g, "IslemZamani", each islemZamani),`
Filtrelenmiş tabloya, sorgunun başında elde edilen 'islemZamani' bilgisi yeni bir sütun olarak eklenir. Böylece her kur verisinin hangi zamana ait olduğu bilgisi tabloya dahil edilmektedir. - `i = Table.TransformColumnTypes(h,{{"IslemZamani", type datetime}})`
"IslemZamani" sütunundaki metin formatındaki tarih ve saat bilgisi, Excel'in tarih/saat (datetime) olarak tanıyacağı bir formata dönüştürülür. Bu dönüşüm, ileride yapılacak sıralama veya tarih bazlı filtreleme işlemleri için çok faydalı olacaktır. - `in i`
Sonuç olarak, 'i' adlı değişkende tutulan işlenmiş tablo verileri döndürülür.
Adım 4: Sorguyu Adlandırma ve Yükleme
- Power Query Editörü'nün sağ tarafında bulunan "Sorgu Ayarları" (Query Settings) bölmesindeki "Ad" (Name) kısmına, oluşturulan bu sorgu için bir isim verin (Örneğin: YK_Anlik_Kur).
- Daha sonra, "Giriş" (Home) sekmesinde yer alan "Kapat ve Yükle" (Close & Load) butonunun altındaki oka tıklayıp "Kapat ve Şuraya Yükle..." (Close & Load To...) seçeneğini seçin.
- Açılan "Veri İçeri Aktar" (Import Data) penceresinde aşağıdaki ayarları yapın:
- "Tablo" (Table) seçeneğini işaretleyin.
- "Yeni çalışma sayfası" (New worksheet) veya "Varolan çalışma sayfası" (Existing worksheet) seçeneklerinden birini tercih ederek verilerin yükleneceği konumu belirleyebilirsiniz. ÖNEMLİ NOT: İkinci M kodunun doğru çalışabilmesi için, bu ilk sorgudan elde edilen verilerin Excel'de "Guncel" adında bir tabloya yüklenmesi gerekmektedir. Bu nedenle, verilerin yeni bir çalışma sayfasına tablo olarak yüklenmesi ve Excel'e dönüldükten sonra oluşturulan bu Excel tablosuna "Guncel" adının verilmesi tavsiye edilir. (Tablo seçildikten sonra Excel'in "Tablo Tasarımı" sekmesinden tablo adı kolayca değiştirilebilir.)
- "Tamam" butonuna tıklayın. Anlık kur verileri belirttiğiniz Excel sayfasına yüklenecektir.
Bölüm 2: Döviz Kurlarını Tarihi Bir Arşivde Biriktirme (İkinci M Kodu Analizi)
İlk sorgu, anlık kur verilerini çekmektedir. Bu kurların günlük olarak biriktirilmesiyle kapsamlı bir kur arşivi oluşturulabilir. İkinci M kodu bu amaca hizmet etmektedir.Adım 1: "Master" Adında Boş Bir Arşiv Tablosu Oluşturma
Bu adım önemlidir. Power Query ile yeni çekilen kurların ekleneceği bir ana tabloya ihtiyaç duyulmaktadır.- Excel'de yeni bir çalışma sayfası açın.
- İlk satıra şu başlıkları yazınız:
Döviz Cinsi Alış (TL) Satış (TL) IslemZamani - Bu başlıkları içeren hücreleri seçin ve Excel'in "Ekle" (Insert) sekmesinden "Tablo" seçeneğine tıklayın. Açılan pencerede "Tablomun üst bilgileri var" (My table has headers) kutucuğunun işaretli olduğundan emin olun ve "Tamam" butonuna tıklayın.
- Oluşan bu Excel tablosunu seçin. Excel'in "Tablo Tasarımı" (Table Design) sekmesinde, sol üst bölümde yer alan "Tablo Adı" (Table Name) alanına "Master" yazın ve Enter tuşuna basın. Bu tablo, başlangıçta sadece başlık satırından oluşacak ve veri içermeyecektir.
Adım 2: "Master" Tablosunu Power Query'e Kaynak Olarak Tanıtma (Önerilen İyileştirme)
İkinci M kodunda yer alan `& Master` gibi dolaylı bir referans, bazen belirsizliklere yol açabilir. Daha sağlam bir yaklaşım, "Master" adlı Excel tablosunun öncelikle Power Query'e ayrı bir sorgu olarak tanıtılmasıdır.- Excel'de "Veri" sekmesine gidin.
- "Tablodan/Aralıktan" (From Table/Range) seçeneğine tıklayın. (Bu işlem öncesinde, "Master" adlı Excel tablonuzdaki herhangi bir hücrenin seçili olması gerekebilir.)
- "Master" tablosu Power Query Editörü'ne yüklenecektir. Editörün sağ tarafındaki "Sorgu Ayarları" bölmesinde, bu yeni sorguya "MasterKayitlar" adını verin.
- Bu sorgu üzerinde herhangi bir veri dönüşümü yapılmasına gerek yoktur. "Giriş" sekmesinden "Kapat ve Yükle" butonunun altındaki oka tıklayıp "Kapat ve Şuraya Yükle..." seçeneğini seçin.
- Açılan pencerede "Yalnızca Bağlantı Oluştur" (Only Create Connection) seçeneğini işaretleyin ve "Tamam" butonuna tıklayın. Bu işlemle "Master" tablosu, Power Query için tanımlı bir veri kaynağı haline gelir.
Adım 3: İkinci M Kodunu Yeni Bir Sorguya Yapıştırma
Şimdi, arşivleme işlemini gerçekleştirecek ikinci sorgu oluşturulacaktır.- Excel'de tekrar "Veri" > "Veri Al" > "Diğer Kaynaklardan" > "Boş Sorgu" adımlarını izleyerek yeni bir Power Query sorgusu açın.
- "Gelişmiş Düzenleyici"yi açın ve aşağıdaki güncellenmiş ve iyileştirilmiş M kodunu yapıştırın:
Kod:
let
// 1. Adım: "Guncel" adlı Excel tablosundan (ilk sorgunun çıktısı) veriyi al
Kaynak_Guncel = Excel.CurrentWorkbook(){[Name="Guncel"]}[Content],
TipDonusumu_Guncel = Table.TransformColumnTypes(Kaynak_Guncel,{{"Döviz Cinsi", type text}, {"Alış (TL)", type number}, {"Satış (TL)", type number}, {"IslemZamani", type datetime}}),
// 2. Adım: "MasterKayitlar" sorgusundan (Master Excel tablosunun bağlantısı) mevcut arşiv verisini al
Kaynak_Master = MasterKayitlar,
// MasterKayitlar sorgusu zaten doğru tiplerde olmalı, ama emin olmak için bir tip dönüşümü eklenebilir:
// TipDonusumu_Master = Table.TransformColumnTypes(Kaynak_Master,{{"Döviz Cinsi", type text}, {"Alış (TL)", type number}, {"Satış (TL)", type number}, {"IslemZamani", type datetime}}),
// 3. Adım: Güncel verileri mevcut arşiv verilerine ekle (append)
BirlestirilmisTablo = Table.Combine({Kaynak_Master, TipDonusumu_Guncel}), // Önce Master, sonra Güncel
// 4. Adım: Yinelenenleri Kaldır (Opsiyonel ama Önemli!)
// Eğer aynı IslemZamani ve Döviz Cinsi için birden fazla kayıt oluşması istenmiyorsa
// Özellikle tüm sütunlara göre yinelenenleri kaldırmak daha güvenli olabilir
YinelenenleriKaldır = Table.Distinct(BirlestirilmisTablo, {"Döviz Cinsi", "IslemZamani"}),
// Veya tüm sütunlara göre: Table.Distinct(BirlestirilmisTablo)
// 5. Adım: Son bir tip dönüşümü (genellikle iyi bir pratiktir)
SonTipDonusumu = Table.TransformColumnTypes(YinelenenleriKaldır,{{"Alış (TL)", type number}, {"Satış (TL)", type number}, {"IslemZamani", type datetime}})
in
SonTipDonusumu
Adım 4: İkinci M Kodu Adımlarının Detaylı Açıklaması (Güncellenmiş Kod)
- `Kaynak_Guncel = Excel.CurrentWorkbook(){[Name="Guncel"]}[Content],`
Mevcut Excel çalışma kitabında bulunan "Guncel" adlı tablonun içeriğini alır. Bu tablo, ilk sorgu (YK_Anlik_Kur) tarafından Excel'e yüklenen anlık kur verilerini içerir. - `TipDonusumu_Guncel = Table.TransformColumnTypes(Kaynak_Guncel,{...}),`
"Guncel" tablosundaki sütunların veri tiplerini (metin, sayı, tarih/saat vb.) olması gereken formatlara dönüştürür. Bu, veri birleştirme işlemi öncesinde veri tutarlılığının sağlanması açısından önemlidir. - `Kaynak_Master = MasterKayitlar,`
Bu satır, bir önceki adımda oluşturulan "MasterKayitlar" adlı sorguya (yani "Master" isimli Excel tablosuna) bağlanır. Bu sorgu, mevcut tüm arşivlenmiş kur verilerini içerir. Bahsi geçen orijinal koddaki `& Master` ifadesi yerine bu yöntem, veri kaynağını daha net belirttiği için daha sağlam bir yaklaşımdır. - `BirlestirilmisTablo = Table.Combine({Kaynak_Master, TipDonusumu_Guncel}),`
Bu adımda iki tablo birleştirilir. `Kaynak_Master` (mevcut arşiv verilerini içeren tablo) ile `TipDonusumu_Guncel` (yeni çekilen kur verilerini içeren tablo) alt alta eklenir. `Table.Combine` fonksiyonunun kullanılması, basit `&` birleştirme operatörüne göre daha esnek ve genellikle daha iyi performans sunan bir yöntemdir. Verilerin doğru sırada eklenmesi için `Table.Combine` fonksiyonuna verilen listede önce Master, sonra Güncel tablo referansı listelenmiştir. - `YinelenenleriKaldır = Table.Distinct(BirlestirilmisTablo, {"Döviz Cinsi", "IslemZamani"}),`
Bu önemli bir adımdır. Eğer sorgular kısa aralıklarla birden fazla kez yenilenirse, aynı kur bilgisinin arşive tekrar tekrar eklenmesi söz konusu olabilir. Bu satır, "Döviz Cinsi" ve "IslemZamani" sütun kombinasyonlarına göre yinelenen (tekrar eden) satırları kaldırır. Bu sayede, her bir döviz kuru için belirtilen zamana ait yalnızca tek bir kayıt bulunması sağlanır. İstenirse, `Table.Distinct(BirlestirilmisTablo)` ifadesi kullanılarak tüm sütunların birebir aynı olduğu yinelenen satırlar da kaldırılabilir. - `SonTipDonusumu = Table.TransformColumnTypes(YinelenenleriKaldır,{...})`
Birleştirilmiş ve yinelenen kayıtlardan arındırılmış tablonun sütun tipleri son bir kez daha kontrol edilir ve ayarlanır. Bu, verilerin "Master" adlı Excel tablosuna doğru formatta yazılması için bir güvence sağlar.
Adım 5: Arşiv Sorgusunu Adlandırma ve Yükleme
- Power Query Editörü'nde bu sorguya bir isim verin (Örneğin: GuncelKurlariArsiveEkle).
- "Giriş" sekmesinde yer alan "Kapat ve Yükle" butonunun altındaki oka tıklayıp "Kapat ve Şuraya Yükle..." seçeneğini seçin.
- Açılan "Veri İçeri Aktar" penceresinde aşağıdaki ayarları yapın:
- "Tablo" seçeneğini işaretleyin.
- "Varolan çalışma sayfası" seçeneğini işaretleyin ve hedef olarak "Master" adlı Excel tablonuzun bulunduğu hücrelerden birini (örneğin, tablonun başlık hücresini) gösterin. Bu sorgunun çıktısı, "Master" tablosunun mevcut içeriğinin üzerine yazılarak tabloyu güncelleyecektir.
- "Tamam" butonuna tıklayın.
Sorguları Çalıştırma ve Otomatik Yenileme
- Manuel Yenileme: Excel'de "Veri" sekmesine gidip "Tümünü Yenile" (Refresh All) butonuna tıklayarak tüm sorguları (önce anlık kur sorgusu, sonra arşivleme sorgusu) sırayla çalıştırabilirsiniz. Power Query, sorgular arasındaki bağımlılıkları algılayarak genellikle doğru sırada yenileme yapar. Daha kontrollü bir yenileme için, "Sorgular ve Bağlantılar" bölmesinden önce "YK_Anlik_Kur" sorgusu, ardından "GuncelKurlariArsiveEkle" sorgusu manuel olarak yenilenebilir.
- Dosya Açıldığında Yenileme: "Sorgular ve Bağlantılar" (Queries & Connections) bölmesini açın (Bu bölme, "Veri" sekmesinde bulunur). Her bir sorguya sağ tıklayıp "Özellikler" (Properties) seçeneğine gidin. Açılan pencerede "Dosya açılırken veriyi yenile" (Refresh data when opening the file) kutucuğunu işaretleyebilirsiniz. Bu sayede, Excel dosyası her açıldığında kur verileri otomatik olarak güncellenir ve arşivlenir.
Önemli Hususlar: Sorun Giderme ve İpuçları
- Web Sitesi Değişiklikleri (CSS Seçici Sorunları): Makalenin başında da belirtildiği gibi, eğer Yapı Kredi Bankası web sitesinin HTML yapısını değiştirirse, ilk sorgudaki `Html.Table` adımları (özellikle 'b' ve 'd' olarak adlandırılan adımlar) hata verebilir. Bu durumda:
- Kullanılan web tarayıcısının "Geliştirici Araçları" (genellikle klavyeden F12 tuşuna basılarak erişilir) kullanılarak sayfanın yeni HTML yapısının incelenmesi ve M kodundaki CSS seçicilerinin güncellenmesi gerekir. İncelenmek istenen element üzerine sağ tıklayıp "İncele" (Inspect) gibi bir seçenekle ilgili HTML etiketleri ve bu etiketlere ulaşmak için kullanılabilecek yollar (path) bulunabilir. Bu konu biraz teknik bilgi gerektirse de, internet üzerinde "CSS selectors tutorial" gibi anahtar kelimelerle yapılacak aramalarla temel mantığı öğrenilebilir.
- Alternatif bir yöntem olarak, Power Query'nin kendi arayüzündeki "Web'den Veri Al" özelliği kullanılarak ilgili tablo web sayfasından yeniden bulunmaya çalışılabilir ve bu işlem sırasında Power Query tarafından otomatik olarak oluşturulan M kodundan yeni CSS seçicileri tespit edilerek mevcut koda adapte edilebilir.
- Hata Mesajları: Power Query bir hata ile karşılaştığında, genellikle hatanın hangi adımda meydana geldiğini belirten bir mesaj gösterir. Sorgu adımlarını tek tek kontrol ederek sorunun kaynağı tespit edilebilir.
- İşlem Zamanı Formatı: Eğer Yapı Kredi Bankası'nın web sayfasında sunduğu "İşlem Zamanı" bilgisinin formatı değişirse, `Table.TransformColumnTypes` adımıyla yapılan tarih ve saat dönüşümü sorun yaratabilir. Gerekirse, metin olarak gelen tarih/saat bilgisinin `DateTime.FromText` gibi M dili fonksiyonları kullanılarak, doğru format belirtilerek ayrıştırılması (parse edilmesi) gerekebilir.
- Büyük Veri Arşivleri: "Master" tablosu zamanla çok sayıda satır içerebilir. Excel'in çok büyük tablolarla çalışırken performansı düşebilir. Eğer çok uzun vadeli ve çok sık aralıklarla arşivleme yapılması planlanıyorsa, verilerin bir Microsoft Access veritabanına veya SQL Server gibi daha ölçeklenebilir bir veritabanı sistemine yüklenmesi düşünülebilir.
Geliştirme Fikirleri ve Ek Olanaklar
Bu sistemle önemli bir temel oluşturulmuştur. İleride aşağıdaki geliştirmeler de değerlendirilebilir:- Günlük, haftalık veya aylık kur değişim oranlarını hesaplayan yeni sütunlar eklemek.
- "Master" tablosundaki verilerden faydalanarak Excel'in grafik özellikleriyle kur trendlerini görselleştirmek.
- Belirli bir kur hedefine ulaşıldığında kullanıcıyı bilgilendirecek Excel formülleri veya koşullu biçimlendirmeler uygulamak.
- Sorgu çalıştırıldığında bir hata oluşması durumunda otomatik e-posta ile bildirim göndermek (Bu tür bir otomasyon için VBA makroları veya Office Scripts gibi ek araçlar gerekebilir).
Sonuç
Bu içerikte sunulan M kodları ve Power Query yöntemleri kullanılarak, Yapı Kredi Bankası'ndan döviz kurlarının otomatik olarak Excel'e çekilmesi, işlenmesi ve kişisel bir kur arşivi oluşturulması için kapsamlı bir çözüm sunulmuştur. Bu M kodları ve Power Query'nin yetenekleri sayesinde, finansal verilerin yönetimi önemli ölçüde kolaylaşmakta ve manuel işlemlere bağlı hata olasılığı azalmaktadır.Bu içerik, kullanıcıların ilgili konuda bilgi sahibi olmalarını ve sunulan çözümü etkin bir şekilde uygulamalarını sağlamak amacıyla hazırlanmıştır. M dilinin, pratikle daha etkin kullanılabilecek güçlü bir araç olduğu unutulmamalıdır. Konuyla ilgili sorular veya sistemin geliştirilmesine yönelik öneriler için yorumlar bölümü kullanılabilir.
Excel RESİM Fonksiyonu
2024-05-01