Selamlar,
Beden Kodlarını listelemek için kullandığımız
=
EĞERHATA(
İNDİS(
XMLFİLTRELE("<a><b>"&
METİNBİRLEŞTİR("</b><b>";;'B1:B10'!$A$2:$C$1000)&"</b></a>";"//b");(
SATIRSAY($A$1:A1)-1)*3+
1);"")
formülünde,
XMLFİLTRELE işlevi ana işlev olup, XMLFİLTRELE işlevi belirtilen
xpath'i kullanarak XML içeriğinden belirli verileri döndürür.
Buradaki yapı standarttır.
Yani
Bunun için ilk önce, yazılan metinleri geçerli bir XML e dönüştürmek gerekir.
Örneğin A1 hücresinde sadece Boşluklar kullanarak yazılmış bir cümle olsun.
"<Metin><a>"&YERİNEKOY(A1;" ";"</a><a>")&"</a></Metin>")
ile A1 hücresinde kelimeler arasındaki boşlukları "</a><a>" yaparak cümle içindeki kelimeleri içeren XML yapısı elde edilir.
XMLFİLTRELE ile
XMLFİLTRELE("<Metin><a>"&YERİNEKOY(A1;" ";"</a><a>")&"</a></Metin>";"xpath")
şeklinde formüle edilerek, xpath içeriğine göre işlem yapılacaktır.
xpath ile ilgili
referansı aşağıdaki bağlantıda görebilirsiniz.
Formülümüzde ise
xpath olarak "
//b" kullanılmıştır.. Anlamı ise tüm listenin elde edilmesidir.
Bir örnek
Burada isimler arasında Virgül kullanıldığından Virgüllerin yerlerine "</a><a>" konularak XML yapısı elde edildi
xpath olarak "
//b" kullanıldı ve liste elde edildi.
Aynı şekilde, xpath olarak
"//a[not(. = preceding::a/.)]" kullanılarak
BENZERSİZ isimler listesi oluşturulmakta...
Bir örnek daha
Burada ise, xpath olarak
"/x/a[11]" kullanılarak A1 de bulunan ifadenin
11. kelimesi alınmakta...
Formülümüzdeki
METİNBİRLEŞTİR işlevi ise XML yapısı elde edilmek için kullanıldı...
METİNBİRLEŞTİR işlevinin özelliği, her bir metin ayrı ayrı yazılarak, ya da formül kullanarak metinleri birleştirmektir. Bu işlevde Sayfa1 : Sayfa5!A5:C15 gibi 3D formülleri kullanılabilmektedir.
Formülümüzde
XMLFİLTRELE("<a><b>"&METİNBİRLEŞTİR("</b><b>";;'B1:B10'!$A$2:$C$1000)&"</b></a>";"//b")
kısmı ile elde edilen liste ise aşağıdaki şekildedir....
Bu listenin 1. satırından itibaren her 3 satırda bir olanlar Beden numarasını vermekte... Yani formülümüzdeki (
SATIRSAY($A$1:A1)-1)*3+
1) ile
1, 4, 7.... gibi 1. satırından itibaren her 3 satırda bir olanların liste satır numaraları bulunmakta.... Ve
İNDİS(
Liste;(
SATIRSAY($A$1:A1)-1)*3+
1)) ile de Bu listenin istenilen satır numaralarına karşılık gelen isimler yazdırılmaktadır....
Umarım açıklayabilmişimdir....
Saygılarımla...