XMLFİLTRELE (FILTERXML) Fonksiyonu Nedir?
XMLFİLTRELE fonksiyonu, Excel‘de bir hücrede metin olarak bulunan XML verisini belli XPath sorgularıyla filtreleyip ayrıştıran ve sonuçları bir dinamik dizi olarak döndüren bir fonksiyondur. Genellikle WEBHİZMETİ (WEBSERVICE) fonksiyonuyla alınan XML formatındaki web servis yanıtlarını veya hücredeki XML verilerini parse (ayrıştırma) etmek amacıyla kullanılır. Bu sayede ham XML verinin içinden ilgili etiket veya düğüm bilgilerini çekip Excel’de tablo haline getirebilirsiniz.
Önemli Noktalar:
- Gelen verinin XML formatında olması gerekir.
- XPath sorgusuyla hangi düğüm(ler)i çekmek istediğinizi belirtirsiniz.
- Sonuç bir dizi olarak döner; Excel’in yeni dinamik dizi özelliğini destekleyen sürümlerde (Microsoft 365) çok satırlı veya çok sütunlu dökümler alabilirsiniz.
- Eğer sorgulanan düğüm(ler) bulunamazsa #DEĞER! veya boş sonuç dönebilir.
Sözdizimi
XMLFİLTRELE(xml; xpath)
Argümanlar:
- xml (gerekli):
Ayrıştırılacak XML içeriğinin bulunduğu metin. Genellikle bir hücredeki dize veya WEBHİZMETİ fonksiyonunun sonucu. - xpath (gerekli):
Hangi XML etiketini/düğümünü çekmek istediğinizi belirten XPath ifadesi.- Örneğin
"//book/title"
ifadesi,<book>
etiketlerinin altındaki<title>
etiketlerini bulur. "//entry/@id"
gibi bir ifade,entry
etiketininid
niteliğini çeker.
- Örneğin
Not: XPath sürüm 1.0 ile uyumlu temeldir. Daha gelişmiş XPath sürümleri (2.0/3.0) desteklenmeyebilir.
Örnek Tablo ve Formül Kullanımı
Aşağıdaki örnekte, bir hücrede basit bir XML içeriği olduğunu varsayalım. Bu XML, kitaplar ve yazarlar hakkındaki veriyi barındırsın. A sütununda bu XML metnini saklayacağız, B sütununda XMLFİLTRELE fonksiyonuyla belirli etiketleri parse edip tablo şeklinde sonuç dökeceğiz.
XML İçeriği (Örneğin A2 Hücresinde)
<catalog>
<book id="b1">
<title>Excel İpuçları</title>
<author>Ali Yılmaz</author>
</book>
<book id="b2">
<title>Veri Analizi</title>
<author>Ayşe Demir</author>
</book>
</catalog>
Amaç: Her kitabın title
ve author
verilerini çekmek.
A Sütunu (XML Metni) | B Sütunu (Formüller) | C Sütunu ve Devamı (Sonuç) |
---|---|---|
(A2’deki uzun XML metnini hücreye yapıştırın) | =XMLFİLTRELE(A2; “//book/title”) | B2 hücresi → “Excel İpuçları” (ilk satır), “Veri Analizi” |
=XMLFİLTRELE(A2; “//book/author”) | B3 hücresi → “Ali Yılmaz” (ilk satır), “Ayşe Demir” |
- A2 hücresine yukarıdaki XML metnini yapıştırın (tek satırda ya da birleştirilmiş metin halinde).
- B2 hücresine:
=XMLFİLTRELE(A2; "//book/title")
Bu formülcatalog
altında<book>
etiketleri içindeki<title>
etiketlerinin değerlerini bulur. İki kitap olduğu için sonuç dinamik dizi şeklinde (Excel 365 sürümünde) aşağı doğru yayılacaktır:B2: Excel İpuçları B3: Veri Analizi
- C2 hücresine (veya B4 hücresine, nerede istersek):
=XMLFİLTRELE(A2; "//book/author")
Bu da<book>
etiketlerinin<author>
alt etiketlerini listeler:C2: Ali Yılmaz C3: Ayşe Demir
Arzu ederseniz id niteliğini çekmek için "//book/@id"
ifadesiyle etiketin id
attribute (nitelik) değerlerini döndürebilirsiniz.
Bir WEBHİZMETİ (WEBSERVICE) Örneği
Eğer A2 hücresinde =WEBHİZMETİ("http://site.com/books.xml")
gibi bir istek yapsaydınız ve sunucu XML döndürseydi, B2’de =XMLFİLTRELE(A2; "//kitaplar/kitap")
benzeri bir sorgu yazabilirdiniz. Tabi alınan XML’in yapısına göre XPath ifadenizi uyarlamanız gerekir.
İpuçları:
- Sonuç Çok Sütunlu Olabilir: Genişleyerek tablo şeklinde dökülebilir. Örneğin
"/catalog/book"
sorgusu ile her<book>
node’unu teker teker satırda elde edebilirsiniz. Sonra bir alt XPath sorgusu ile<title>
ve<author>
‘ı yan yana getirmeye çalışabilirsiniz. Ancak Excel’de basit XMLFİLTRELE kullanımında her XPath ifadesi genelde bir boyutlu dizi olarak gelir. - Hata Yönetimi: Eğer XML geçersizse veya XPath bulunamazsa #DEĞER! gibi hatalar görebilirsiniz. EĞERHATA fonksiyonuyla bunları yakalayabilirsiniz.
- Kombinasyon: Sıklıkla WEBHİZMETİ (WEBSERVICE) + XMLFİLTRELE (FILTERXML) fonksiyonlarını birlikte kullanarak online API’lerden gelen XML yanıtını tabloya çevirmek mümkündür.
Özet
XMLFİLTRELE (FILTERXML) fonksiyonu, Excel’de hücredeki XML içeriğini bir XPath sorgusuyla parse edip ilgili düğüm veya etiketlerin içeriklerini bir dizi olarak döndürür. Bu sayede hem yerel XML metinlerini hem de WEBHİZMETİ ile çekilen XML sonuçlarını tablo formatına dönüştürerek, Excel içinde analiz edebilir, raporlayabilir veya işleyebilirsiniz.
Web kategorisindeki diğer formüller için buraya bakabilirsiniz.
🟢Eğitim talepleri için bizimle buradan iletişime geçebilirsiniz. 👉 https://forms.office.com/r/0gMDksLjLg
🟢News from Microsoft 365 bültenimize abone olabilir. 👉 https://www.linkedin.com/newsletters/7076133011028611072/
🟢Microsoft 365 Copilot Community grubumuza katılabilirsiniz. 👉 https://www.linkedin.com/groups/9559408/
Sevgiler ❤️
Bir yorum bırak