Çözüldü Satır Sütun Kesişimlerini Kritere Göre Listeleme

Qene

Yıllık Site Üyesi
Excel Versiyonu
Excel 365
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Herkese Merhaba, Ekli Tabloyu kişilerin birbirleriyle tuttukları nöbet sayısını belirten tablo olarak düşünebilirsiniz. J1 ve K1 hücrelerinde belirtilen nöbet sayıları aralığına göre nöbet sayıları ve kimlerle tutulduğu ( satır sütun kesişim bilgileri) dökümünü mavi alandaki gibi nasıl alabiliriz ? Örneğin resimdeki gibi 3 ve 6 kez nöbet tutan bilgileri J-L sütunlarına yazılmıştır. Bu listeyi otomatik olarak alabileceğimiz formül ne olabilir. Teşekkürler destekleriniz için.

Adsız1.webp
 

Ekli dosyalar

SÜPER çözümler gelmiş...

Bu Süper çözümlere alternatif yazılmaz....

Sadece çeşitlilik olması açısından yazıyorum...

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
 
Bir çeşitlilik daha...
SÜTUNA işlevlerine GENİŞLET işlevinin de dahil edilmesi....
(Aslında formül uzamış oluyor, ama dediğim gibi çeşitlilik olsun)

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

ve aynı yöntemin SÜTUNA-GENİŞLET yerine İNDİS ile elde edilmesi ( Yeni işlevler çıkmadan önce kullanıyorduk)

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
 
Sayın hocalarım çözüm alternatiflerinizin herbiri birbirinden güzel gerçekten çok teşekkür ederim hepinize. Son olarak şunu ekleyebilir miyiz. Misal "isim1 isim2 4" varken aşağıda "isim2 isim1 4" de ekstradan fazladan geçiyor. Ve tüm hepsinden fazladan 1 kez daha geçiyor. Bunu engellemek için son formülü benzersiz yapınca benzersiz olmuyor. Formüle ilk başlarken mi bu benzersizlik dahil edilmeliydi veya daha pratik fikirler ne olabilir.. Bunun için çözüm önerileriniz neler olabilir teşekkürler
 
Ben de biri makro, diğeri dökülmeli KTF olmak üzere 2 alternatif çözüm önerisinde bulunayım.

Makro kodu, sayfaya eklenecek bir düğme ile ilişkilendirerek kullanılabilir.
KTF formülü ise istenilen hücreye
=KIM_KIMINLE(A2:A8;B2:H8;J1;K1) gibi =KIM_KIMINLE( İsimAlanı ; VeriAlanı ; EnAz ; Ençok ) şeklinde uygulanmalıdır.


VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(11 satır)

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(13 satır)
 
Sayın hocalarım çözüm alternatiflerinizin herbiri birbirinden güzel gerçekten çok teşekkür ederim hepinize. Son olarak şunu ekleyebilir miyiz. Misal "isim1 isim2 4" varken aşağıda "isim2 isim1 4" de ekstradan fazladan geçiyor. Ve tüm hepsinden fazladan 1 kez daha geçiyor. Bunu engellemek için son formülü benzersiz yapınca benzersiz olmuyor. Formüle ilk başlarken mi bu benzersizlik dahil edilmeliydi veya daha pratik fikirler ne olabilir.. Bunun için çözüm önerileriniz neler olabilir teşekkürler

Öncelikle, söylemek isterim ki,
1 - Madem ki, "isim1 isim2 4" ve "isim2 isim1 4" gibi olanlar benzersiz olacak, şu halde ilk mesajda verilen Tablo yapısı Uygun Değil. Daha uygun bir şekilde sütunlarda ya da satırlarda listeleme şeklinde verilmeli... Ya da, illa ki bu tip tablo şeklinde verilecekse,

1667301345541.webp

şeklinde verilmeli...
Çünkü, ilk mesajdaki bir tablodan hareketle, oluşturulacak listede benzersiz araştırılması satır ve sütun işlenebilen Dizi Formüllerle elde edilecektir. Bu da performans demektir.

2 -
Bunu engellemek için son formülü benzersiz yapınca benzersiz olmuyor.
Çok kolonlu tablolarda Benzersiz demek, tüm satır içeriğine sırasıyla bakılarak AYNI olanlar demektir.
Yani
"isim1 isim2 4" ve "isim2 isim1 4" gibi olanlar benzersiz değildir.
Benzersiz olabilmesi için aynı kolonlarda aynı değerler olmalıdır.

İstenilen tipteki benzersiz olayı için, benzersizleri bulabilmek üzere, yerleşik bir fonksiyon yok. Benim bildiğim, bunları ancak, satır ve sütun değerlendirmeli Dizi işlevleriyle (DİZİOLUŞTUR, REDUCE... vs) elde edebilirsiniz.... Başka bir yöntem varsa da öğrenmek isterim....

Bunun için,

1 - Ya verilen tabloyu, resimde gösterilen tablo şekline dönüştürmek ve bunu referans alıp formülde kullanmalı.
Eğer böyle yapılacaksa, bu durumda, sabit hücre adreslerini referans alan, yani dizilerle çalışmaya işlevlere özellikle dikkat edilmeli....
Örneğin,
5 numaralı mesajda verdiğim
Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

formülünde, kritik olay İNDİS(A:A;SATIR(s)) kısmındadır. Bundan dolayı, bu formül çalışmayacaktır.

Eğer verilen tablo, resimde gösterilen tablo şekline dönüştürülüp formüllerde referans alınacaksa,

Formüllerde geçen B2:H8 yerine

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

yazılabilir....

Not : Bu olay, 5 nolu mesajdaki formül hariç, diğer verilen formüllerde geçerli olacaktır.

2 - Liste elde edildikten sonra, dizi işleviyle bu listede "isim1 isim2 4" ve "isim2 isim1 4" gibi olanlar değerlendirilir ve liste bu değerlendirmeye göre filtre edilir.
Bu, çözüm için verilen tüm formüllerde geçerli olacaktır.
Örnek olarak da yine 5 numaralı mesajda verilen formüle uygularsak,

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

şeklinde olacaktır.

Burada,
a ad tanımlamasıyla, 5 nolu mesajdaki formül tanımlandı.
b ad tanımlamasıyla
DİZİOLUŞTUR(SATIRSAY(a);;LAMBDA(x;y;--ESAYIYSA(KAÇINCI(İNDİS(a;x;1)&"|"&İNDİS(a;x;2);İNDİS(a;SIRALI(x);2)&"|"&İNDİS(a;SIRALI(x);1);0))))
a ile tanımlanan listenin kolonlarının yer değiştirilerek benzerlik araştırılması DİZİOLUŞTUR işleviyle yapılmakta.
Sonuç olarak da,
FİLTRE(a;b=0)
formülü ile de, benzerlik araştırılması sonuçlarına göre listenin filtrelenmesi işlemi uygulanarak sonuç elde edilmekte.
 
İlginiz ve makro çözüm önerileriniz için çok teşekkür ederim @Ömer BARAN hocam #7 nolu mesajımdaki <<Misal "isim1 isim2 4" varken aşağıda "isim2 isim1 4" de ekstradan fazladan geçiyor. Ve tüm hepsinden fazladan 1 kez daha geçiyor. Bunu engellemek için >> kod öneriniz olabilir mi

Ben de biri makro, diğeri dökülmeli KTF olmak üzere 2 alternatif çözüm önerisinde bulunayım.

Makro kodu, sayfaya eklenecek bir düğme ile ilişkilendirerek kullanılabilir.
KTF formülü ise istenilen hücreye
=KIM_KIMINLE(A2:A8;B2:H8;J1;K1) gibi =KIM_KIMINLE( İsimAlanı ; VeriAlanı ; EnAz ; Ençok ) şeklinde uygulanmalıdır.
 
@52779 hocam verdiğiniz değerli bilgiler için çok teşekkür ederim. Konu şimdi daha netleşmiştir ama yerleşik işlevlerden olan SIRALA işleviyle aklıma takılan asıl mevzuyu da dile getirmek isterim.
Misal Görselde B2:D3 aralığında veri tablomuz var ilk satırda ali veli 3.. 2. satırda veli ali 3 bulunmaktadır. Sırala işlevinin son kriteri.. sütuna göre sıralama ve satıra göre sıralama argümentini taşıyor. Bende bu satıra göre argümentini kullanmaya çalışayım dedim. Şimdi B6 Hücresine =SIRALA(B2:D2;;;1) şu formülü yazıp aşağı sürükleyince veriler tam istenilen konuma geliyor bu haliyle Benzersiz ile sarılınca benzersiz hale geliyor. Ama asıl sorun şu ki bize lazım olan kısmı sürüklemeli değil de =SIRALA(B2:D3;;;1) şeklinde yine aynı sonucu vermesi ama dökülmeli bu sonucu vermiyor. Yada eğer ki Satıra göre sıralama olmuyorsa DevrikDönüşüm(B2:D3) şeklinde yapılıpta sütun boyunca olması şekliyle tüm sütunlarda sıralama (sırala işlevi yada sıralaölçüt işlevi) yaptırıp son olarak benzersiz işlevi ile sarmaya çalıştım tabi başarılı olamadım.

Adsız4.webp
 
@Burhan.cesur hocam ilginiz için teşekkürler ama denemelerimde #13 nolu penceredeki formül dinamik sonuç vermiyor.. Örneğin A2=Fikret A3=Nusret aynı şekil B1=Fikret C1=Nusret yapınca 21 benzersiz sonuç almam gerekirken 22 benzersiz sonuç döndürüyor. Gelmemesi gereken Nusret-Nusret-4 sonucu da ekstra geliyor listeye
 
Evet....
Benim Türkçe'm yetersiz kalacak, açıklamaya, ama deneyeceğim...
(Açıklamalarım yine de anlaşılmıyor ya da yanlış anlaşılıyor olabilir... Affola...)

@52779 hocam verdiğiniz değerli bilgiler için çok teşekkür ederim. Konu şimdi daha netleşmiştir ama yerleşik işlevlerden olan SIRALA işleviyle aklıma takılan asıl mevzuyu da dile getirmek isterim.
Evet, tek satır tek sütun olarak, (diğer bir deyişle hücreye formül yaz aşağıya doğru kopyala yöntemi) bir çok işlevle sonuca gidebilirsiniz.
Ben cevabımda yazarken, tablonun dökülmeli elde edilebilmesini (yani sorunuza çözüm beklentisinin karşılanması) kast ettim. Böyle olunca da bunu ancak Dizi işlevleriyle elde edebilirsiniz diye cevap yazmıştım.

Diğer taraftan, Liste ya da Tablo bir bütündür. Filtre ederseniz de sıralama yaptırırsanız da, Kolonlarındaki (ya da satırlarındaki) veriler bir bütün olarak değerlendirilir.
Yani, A1 : C5 aralığında bir tablomuz varsa, A1:A5 , B1:B5, C1:C5 aralıkları (kolonlar) kendi arasında bir bütündür. Farklı bir tablo yapmadıkça, onları ayıramazsınız. Diğer bir ifadeyle, B1:B3 ve B5 aynı kalsın B4 e C4 deki değer gelsin, C4 e de B4 deki değer gelsin diğer değerler değişmesin derseniz, mevcut tablodan hareketle ikinci bir tablo yapmalısınız. Aksi halde aynı tablo üzerinde bunu yapamazsınız...

İstenilen tipteki benzersiz olayı için, benzersizleri bulabilmek üzere, yerleşik bir fonksiyon yok. Benim bildiğim, bunları ancak, satır ve sütun değerlendirmeli Dizi işlevleriyle (DİZİOLUŞTUR, REDUCE... vs) elde edebilirsiniz.... Başka bir yöntem varsa da öğrenmek isterim....

Önerdiğim Dizi işlevlerinde de,
1. seçenekte, mevcut veri tablosundan hareketle YENİ bir tablo oluşturulmakta.
2. seçenekte ise, dizi formülüyle, İki Kolon karşılaştırılıyor. hatta 3. kolon da dahil ediliyor. Çünkü 3. kolonda, iki kolon koşulları sağlarken 3. kolondaki değerler farklı ise, istenilen benzersizliği karşılamıyor demektir. Çünkü satırlar da bir bütündür. karşılaştırmanın sonunda da kriterlere uyanlara / uymayanlara 1 ve 0 değerleri veriliyor. Filtre ile de uyan satırlar filtreleniyor... Vee yine dikkat... Satırlar da bir bütündür ya vardır ya da yoktur.
 
Üst