Çözüldü Farklı Sayfalardaki Verileri Tek Sütunda Toplama

brkayahan

Normal Üye
Merhabalar,

1643131144477.webp


Yukarıda bulunan beden kodlarını diğer sayfalarda(B1:B17) bulunan beden kodlarıyla birlikte aynı sütünda alt alta toplamak istiyorum. Saatlerdir bu konuda formül arıyorum yardımcı olursanız sevinirim :)
 
Moderatörün son düzenlenenleri:
@brkayahan
Anlaşılan benim önerimi kullanmayacaksınız.
O halde formülle çözüm için Sn. @52779 öneride bulunacaktır (konuyu fark edecektir) .

Bence; gereksiz yazışma yapılmasını önlemek bakımından, birkaç hücre için
olması gereken sonuçları olması gereken konumlarına elle yazarak örneklendirip bu haliyle yeni bir örnek belge yüklemelisiniz.

.
 
@brkayahan
Anlaşılan benim önerimi kullanmayacaksınız.
O halde formülle çözüm için Sn. @52779 öneride bulunacaktır (konuyu fark edecektir) .

Bence; gereksiz yazışma yapılmasını önlemek bakımından, birkaç hücre için
olması gereken sonuçları olması gereken konumlarına elle yazarak örneklendirip bu haliyle yeni bir örnek belge yüklemelisiniz.

.
Tabiki, dediğiniz şekilde revize ederek tekrardan yükledim.

Ekleme : * Yeşil ve Kırmızı hücrelerin içinde boşluk bulunabilir.
 

Ekli dosyalar

Sayın 52779 ve diğer forumdaşlar,
XMLFİLTRELE ilk defa dikkatimi çekti.
Açılan konu güzel. Sizin çabanızda baya büyük olmuş.
Mümkünse XMLFİLTRELE olmaksızın başka yöntemle 15. penceredeki örneği yapmanız mümkün mü?
 
@brkayahan, @Ömer BARAN

Selamlar,
** Dosyanızdaki, Örnek olarak doldurulmuş her bir satır her bir sayfaya karşılık gelmekte...
Yani 1. satırdaki veriler RB1 sayfasındaki, 2. satırdaki veriler RB2 sayfasındaki, 3. satırdaki veriler RB3 sayfasındaki ve 4. satırdaki veriler RB4 sayfasındaki verilere karşılık gelmekte...
Eğer böyle isteniyorsa Problem değil....
Ancak, sorunuzda
Ürün Barkoduna bağlı olarak çekilmeli (temel amacım ürün barkodunun hangi kumaş bilgisine sahip olduğunu çekmek )
ibaresi olduğundan, her bir Beden Kod Numarası için bu verilerin tekrarlı şekilde yazılması gerektiğini düşünüyorum...
Ve, böyleyse
O zaman Problem başlıyor....
Çünkü
METİNBİRLEŞTİR işlevinde 3D yani 'RB1:RB25'! gibi referans kullanılacaksa, ayrı ayrı (kesintili) alanlar maalesef kullanılamıyor....
Bu durumda,
ya, her bir sayfa için ayrı ayrı alanları birleştirerek kullanmak gerekli (Örneğin METİNBİRLEŞTİR(",";0";'RB1'!A18:A22&'RB1'!$E$7;'RB2'!A18:A22&'RB2'!$E$7;......... gibi)
ki, formül oldukça can sıkıcı hale gelecektir.

Aynı zamanda sorunuzdaki isteklerde, B7, B25 ve D25 hücrelerinin BOŞ olup olmadıklarının kontrollarının yapılması ve Boş ise şöyle olsun vs gibi durumların da olduğu düşünüldüğünde formül iyice içinden çıkılamaz hale gelecektir...

ya da, her sayfadaki B7 hücresini J18:J22 ye ve de B25 / D25 hücredeki verileri de K18:K22 ye yazdırarak, Alanın kesintisiz kullanımıyla,
yani A18 : K22 olarak kullanarak 'RB1:RB25'!A18 : K22 şeklinde yazıp METİNBİRLEŞTİR işlevi uygulanabilir... Ki, bu durumda da her bir sayfaya J18 : K22 alanına verilerin yazdırılması gerekecektir.

1643302476967.webp


Ben, alanları kesintisiz yapma amacıyla, tüm sayfaların J18 : K22 aralıklarına bu bilgilerin getirilmesi işlemini yaptım.
Formülü uygulayarak aşağıdaki resimdeki gibi listeyi elde ettim.

1643301726208.webp


Burada kullanılan formül, alan değişikliği hariç diğer formülle AYNI... Yani

=EĞER($A2="";"";İNDİS(EĞERHATA(XMLFİLTRELE("<a><b>"&METİNBİRLEŞTİR("</b><b>";0;'RB1:RB25'!$A$18:$K$22)&"</b></a>";"//b");"");KAÇINCI($A2;EĞERHATA(XMLFİLTRELE("<a><b>"&METİNBİRLEŞTİR("</b><b>";0;'RB1:RB25'!$A$18:$K$22)&"</b></a>";"//b");"");0)+1))

Burada +1 : Renk, +2 : Alış Fiyatı, +3 : Beden, +4 : Adet, +5 : Lot, +10 : Kumaş Bilgisi ve +9 : Örme / Dokuma.

Dosyanız ektedir...

ÖNEMLİ Not :
1 - Gerek XMLFİLTRELE ve gerekse METİNBİRLEŞTİR ile fazla miktarda veri birleştirilmesi ve aktarılması söz konusu olmaya başlıyor bu durumda.
Dolayısıyla, dosyanızda yavaşlamalar / kasılmalar olabilecektir.
2 - Her sayfanın J18 : K22 aralığına Kumaş ve Örme/dokuma Bilgilerini aktaramam ya da formülde de her syfa için aralıkları tek tek yazamam diyebilirsiniz.

Bu durumda, en uygun çözüm makro ile çözüm olacaktır.

@Ömer BARAN Bey'in makro kodlarını kullanmanızı tavsiye ediyorum...
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
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.
1643193907531.png

Aynı şekilde, xpath olarak "//a[not(. = preceding::a/.)]" kullanılarak BENZERSİZ isimler listesi oluşturulmakta...

1643194111715.png

Bir örnek daha
Burada ise, xpath olarak "/x/a[11]" kullanılarak A1 de bulunan ifadenin 11. kelimesi alınmakta...
1643194530209.png


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....
1643195070030.png

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...
Office 2016 xmlfiltre ve yerinekoy komutunu denedim. Fakat ilk metni ayırıp gösteriyor. Diğerlerini ise diğer hücrelere ayırmıyor. Nerde hata yapıyorum anlayamadım. Excel sürümümle mi alakalı
 
@sbsezgin
Yaptığınız işlemlere yönelik, dokümanınızın bir örneği ya da
sütun/satır numaralarının da olduğu ve formülünüzün de bulunduğu bir resim olmadan

ne yapmak istediğinizi anlamak maalesef ki mümkün değil.

Net olarak, açıklamalarınızın yapılması durumunda, yardımcı olunacaktır.

Ayrıca,
Bu konu, çözümlenmiş ve kapanmış bir konu olduğundan, Yeni bir konu açmanızda da yarar görüyorum...
 
@sbsezgin
Yaptığınız işlemlere yönelik, dokümanınızın bir örneği ya da
sütun/satır numaralarının da olduğu ve formülünüzün de bulunduğu bir resim olmadan

ne yapmak istediğinizi anlamak maalesef ki mümkün değil.

Net olarak, açıklamalarınızın yapılması durumunda, yardımcı olunacaktır.

Ayrıca,
Bu konu, çözümlenmiş ve kapanmış bir konu olduğundan, Yeni bir konu açmanızda da yarar görüyorum...
İlginiz için çok teşekkürler, araştırma yaparken denk geldim. Bu konu hakkında yeni bir konu açarak yardım talebinde bulunurum.
 
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Formül Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
28
Üst