• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Alfabetik Sıralama Ve Benzersiz Dizdirme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

gy121

Bronz Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
30 Eki 2021
Mesajlar
163
Çözümler
5
Aldığı beğeni
30
Excel V
Office 2016 TR
Konuyu Başlatan
Benzersiz sıralamada nerede hata yapıyorum? Yardımcı olabilirmisiniz?
Ofice 2016
 

Ekli dosyalar

  • Malzeme listesi.xlsx
    506.1 KB · Gösterim: 8
Çözüm
Bir çözüm olsun...
Asağıdaki başka kitapta benim formül çalışıyor. Fakat orjinalde çalışmıyor.
Evet. Mevcut olan bu dokumanda C12 den itibaren C kolonu BOŞ hücredir. Ve formülünüz çalışacaktır.
Orijinal dokumanda ise, bu hücreler formülle "" (Boş) yazdırılmaktadır.
Eğer hücrelerde, böyle, formülle gelen ""(BOŞ) değerleri varsa, formülünüz çalışmayacaktır. Çünkü hücreler gerçekten BOŞ olmayıp "" değerini içerirler. Bu durumda, formülde, bunların da ayrıca değerlendirilmesi gerekir..

Miraga
AYNI olayı vurgulamış zaten ve
2 dosya arasında fark ilk dosyada boş hücrelerde formül olduğu için hata veriyor ikinci dosyada boş hücrelerde formül yok
  • ilk gönderdiğiniz dosyada boş olan hücrelerdeki formülleri silerseniz...
2 Seçenekli dosyaları ayrı ayrı kontrol edersiniz açıklamalı excelde
 

Ekli dosyalar

  • İKİNCİ SEÇENEK.xlsx
    511.5 KB · Gösterim: 3
  • BİRİNCİ SEÇENEK.xlsx
    499.9 KB · Gösterim: 3
2 Seçenekli dosyaları ayrı ayrı kontrol edersiniz açıklamalı excelde
Hocam 2. seçenekteki formül işimi görür fakat formülü kopyala yapıştır yapıyorum. Benim kitapta çalışmıyor. Nerede hata yapıyorum
1705496219711.png
 
Kitap burada
 

Ekli dosyalar

  • Malzeme listesi.xlsx
    522 KB · Gösterim: 2
dizi formül ctrl+shift+enter yapıyorsunuz değilmi
 
c6 hücresine yapıştırıp aşağıdaki hücrelere uygulayın
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
gif i takip edip deneyin formül.gifolmazsa
 
21 nolu mesajda zaten uyarlanmış halini 2 seçenek olarak gönderdim

gönderdiğim dosyalarda işinizi görmediyse belki başka arkadaşlar farklı çözüm yolu üretebilir
Çözüm bulacak arkadaşlar vardır elbet. Hakkınızı helal edin zamanınızı aldık hocam.
 
Bir çözüm olsun...
Asağıdaki başka kitapta benim formül çalışıyor. Fakat orjinalde çalışmıyor.
Evet. Mevcut olan bu dokumanda C12 den itibaren C kolonu BOŞ hücredir. Ve formülünüz çalışacaktır.
Orijinal dokumanda ise, bu hücreler formülle "" (Boş) yazdırılmaktadır.
Eğer hücrelerde, böyle, formülle gelen ""(BOŞ) değerleri varsa, formülünüz çalışmayacaktır. Çünkü hücreler gerçekten BOŞ olmayıp "" değerini içerirler. Bu durumda, formülde, bunların da ayrıca değerlendirilmesi gerekir..

Miraga
AYNI olayı vurgulamış zaten ve
2 dosya arasında fark ilk dosyada boş hücrelerde formül olduğu için hata veriyor ikinci dosyada boş hücrelerde formül yok
  • ilk gönderdiğiniz dosyada boş olan hücrelerdeki formülleri silerseniz listelemeyi doğru yapacaktır.
  • yada c6 hücresine aşağıdaki formülü uygulayıp aşağıya uygularsanız ilk satırı boş algılayıp diğerini sıralayacaktır
Sadece, "" (Boş) olmayan hücrelerin değerlendirildiğinde formülünüzün çalışacağını belirtmiş...

Şimdi ilk alıntıladığım dosyanızda çözümleri yapıp, kolaylık olması açısından, formülleri orijinal dosyanıza göre yazacağım.
Resim olarak çözüm ve açıklama...
R117.png
1 - En uygun çözüm, Alanı Dinamik Alan olarak Ad Tanımlaması ile tanımlayıp bu ad tanımlamasını formülde kullanmaktır. Çünkü DİZi Formüllerle fazladan kullanılmayan hücrelerde de işlem yaptırmak fazlaca performans kaybıdır. Dinamik Alan kullanarak sadece gerekli hücrelerin değerlendirilmesi sağlanmış olur.
$C$6:$C$1000 aralığını kullandığınız için buna göre yaparsak
Orijinal dosyanızda
  • Formüller >>> Ad Yöneticisi >>> Yeni ile ad tanımlaması menüsü açılacak
  • Ad kısmına a yazın.
  • Başvuru Yeri kısmına ise aşağıdaki formülü kopyalayıp yapıştırın.
  • Kod:
    Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
  • Tamam..
  • Dosyanızda F kolonunu seçin
  • Giriş >>> Bul ve Seç >>> Değiştir ile açılan menüde
  • Aranan kısmına $C$6:$C$1000 yazın
  • Yeni Değer kısmına da a yazın
  • Tümünü Değiştir...
Böylece, formülünüz aşağıdaki gibi olacak ve çalışacaktır.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Evet bu bir DİZİ Formüldür ve formüle baktığınızda { ... } parantezleri içerisine alınmış şekilde görünür.

2 - Dinamik Alan tanımlamak istemezseniz, ""(BOŞ) hücrelerin de değerlendirileceği bir formül kullanmalısınız.
Bu durumda, aşağıdaki formülü kullanabilirsiniz...
F6 hücresine yazılır ve aşağıya doğru kopyalanır...
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Resimdeki dokumanı da ekliyorum... İncelersiniz...
 

Ekli dosyalar

  • malzeme.xlsx
    13.7 KB · Gösterim: 2
Çözüm
Bir çözüm olsun...

Evet. Mevcut olan bu dokumanda C12 den itibaren C kolonu BOŞ hücredir. Ve formülünüz çalışacaktır.
Orijinal dokumanda ise, bu hücreler formülle "" (Boş) yazdırılmaktadır.
Eğer hücrelerde, böyle, formülle gelen ""(BOŞ) değerleri varsa, formülünüz çalışmayacaktır. Çünkü hücreler gerçekten BOŞ olmayıp "" değerini içerirler. Bu durumda, formülde, bunların da ayrıca değerlendirilmesi gerekir..

Miraga
AYNI olayı vurgulamış zaten ve

Sadece, "" (Boş) olmayan hücrelerin değerlendirildiğinde formülünüzün çalışacağını belirtmiş...

Şimdi ilk alıntıladığım dosyanızda çözümleri yapıp, kolaylık olması açısından, formülleri orijinal dosyanıza göre yazacağım.
Resim olarak çözüm ve açıklama...
Ekli dosyayı görüntüle 23340
1 - En uygun çözüm, Alanı Dinamik Alan olarak Ad Tanımlaması ile tanımlayıp bu ad tanımlamasını formülde kullanmaktır. Çünkü DİZi Formüllerle fazladan kullanılmayan hücrelerde de işlem yaptırmak fazlaca performans kaybıdır. Dinamik Alan kullanarak sadece gerekli hücrelerin değerlendirilmesi sağlanmış olur.
$C$6:$C$1000 aralığını kullandığınız için buna göre yaparsak
Orijinal dosyanızda
  • Formüller >>> Ad Yöneticisi >>> Yeni ile ad tanımlaması menüsü açılacak
  • Ad kısmına a yazın.
  • Başvuru Yeri kısmına ise aşağıdaki formülü kopyalayıp yapıştırın.
  • Kod:
    Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
  • Tamam..
  • Dosyanızda F kolonunu seçin
  • Giriş >>> Bul ve Seç >>> Değiştir ile açılan menüde
  • Aranan kısmına $C$6:$C$1000 yazın
  • Yeni Değer kısmına da a yazın
  • Tümünü Değiştir...
Böylece, formülünüz aşağıdaki gibi olacak ve çalışacaktır.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Evet bu bir DİZİ Formüldür ve formüle baktığınızda { ... } parantezleri içerisine alınmış şekilde görünür.

2 - Dinamik Alan tanımlamak istemezseniz, ""(BOŞ) hücrelerin de değerlendirileceği bir formül kullanmalısınız.
Bu durumda, aşağıdaki formülü kullanabilirsiniz...
F6 hücresine yazılır ve aşağıya doğru kopyalanır...
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Resimdeki dokumanı da ekliyorum... İncelersiniz...

Hocam izninizle bir şey sormak istiyorum. Ad tanımlaması yapmadan yazdığınız formül çalışıyor, fakat çok kasıyor.( herhalde 1000 satır ve dizi formülü olduğu için). Benim fazla excell bilgim yok. Hatta excell kullanmayı bu forumdan öğrendim diyebilirim. Bu dosyayı da forumdaki örneklere bakarak hazırladım. Sorum şu;

F6 daki formül C1,C2,C3 deki kriterlere bakarak direk data sayfasındaki veriden alfabetik gene sıralıyabilir miyiz? Sıralarsakta gene dizi formülümü olur ve çalışma kitabını kasar mı?
 
Dener misiniz
 

Ekli dosyalar

  • Malzeme listesi.xlsm
    515.5 KB · Gösterim: 3
Hocam çalıştı. Makrosuz olsa daha iyi olurdu. Telefondan makro çalışmıyor, ondan dedim. Ama bilgisayarda çalışıyor. Birde rapor sayfasını kilitliyorum diğer formüller bozulmasın diye. O zaman makroyu çalıştıramıyorum. Onun için bir çözüm var mı? Tabi zahmet olmazsa.
 
Hocam izninizle bir şey sormak istiyorum. Ad tanımlaması yapmadan yazdığınız formül çalışıyor, fakat çok kasıyor.( herhalde 1000 satır ve dizi formülü olduğu için). Benim fazla excell bilgim yok. Hatta excell kullanmayı bu forumdan öğrendim diyebilirim. Bu dosyayı da forumdaki örneklere bakarak hazırladım. Sorum şu;

F6 daki formül C1,C2,C3 deki kriterlere bakarak direk data sayfasındaki veriden alfabetik gene sıralıyabilir miyiz? Sıralarsakta gene dizi formülümü olur ve çalışma kitabını kasar mı?
52779 Hocam sizin ad tanımlaması sayfayı hiç kasmıyor. Çok güzel olmuş sizin de elinize sağlık. Yalnız C6 da tek bir kalem varsa F6 da hiç bir şey göstermiyor. O da önemli değil. Zaten 1 tane varsa gerek bile yok. Ama üstteki sorum için cevap yazarsanız çok memnun olurum. Öğrenmek için soruyorum.

1705578348734.png
 
Hocam izninizle bir şey sormak istiyorum. Ad tanımlaması yapmadan yazdığınız formül çalışıyor, fakat çok kasıyor.( herhalde 1000 satır ve dizi formülü olduğu için). Benim fazla excell bilgim yok. Hatta excell kullanmayı bu forumdan öğrendim diyebilirim. Bu dosyayı da forumdaki örneklere bakarak hazırladım. Sorum şu;

F6 daki formül C1,C2,C3 deki kriterlere bakarak direk data sayfasındaki veriden alfabetik gene sıralıyabilir miyiz? Sıralarsakta gene dizi formülümü olur ve çalışma kitabını kasar mı?
Evet...
DİZİ Formüller ve TOPLAMA, TOPLA.ÇARPIM, ARA,... vs gibi Dizi Formül mantığıyla çalışan formüller, her hücreye başvurur, kriterlerin uygunluğuna bakar, uygun olanları ve olmayanları değerlendirerek sonuç üretir. O nedenle de ÇOK Sayıda Hücrenin değerlendirilmesi (yani değerlendirilecek aralığı uzun tuttuğunuzda) fazlaca performans kaybına neden olurlar ve yavaşlamalara / kasılmalara neden olurlar... Hele de bu dizi formülleri içerisinde, dizi olarak ya da geri dönüşlü olarak EĞERSAY, KAÇINCI gibi işlevleri kullanırsanız çok daha fazla performans kaybı oluşacaktır.

Özellikle, Excel2021 öncesi versiyonlarda Kriterli / Kritersiz, Alfabetik Sıralı / Sırasız Benzersiz hesaplamalarında bu tip formüller kullanılacağından kasılmalar oluşacaktır.

Örneğinize bakın
1 - C6 : C1000 aralığı var.
Dolu hücreler C6 : C11 aralığında (6 hücre)
Geri kalanlarda ise (989 hücre) formüllerle "" yazılıyor. (Zaten formüllerin bu kadar hücrede olması da ayrı bir problem. Zira Boş hücrede bile çalışan formül var demektir.)
Benzersiz için yazdığınız formül, 6 adet hücre yerine BOŞ hücreler de dahil olmak üzere tüm hücrelere bakıyor...(boşu boşuna 989 hücreye bakıp değerlendiriyor ve sonuç üretmesi gecikiyor)
2 - Formüllere bakın...
EĞERSAY($C$6:$C$1000;"<"&$C$6:$C$1000) gibi Tüm aralığı sayıp değerlendirecek bir EĞERSAY işlemi (formül içerisinde 1 den fazla adette var) ve de
EĞERSAY(F5:F$5;$C$6:$C$1000) her değer üretildiğinde, üretilmiş diğer değerlerin içerisinde olup olmadığını değerlendiren bir geri dönüşlü EĞERSAY işlemi mevcut...

Ve de bunlar Tüm C6 : C1000 aralığını değerlendiriyor.

Kasılmaması mümkün değil bence....

İşte bu nedenle
1 - Formül ile çözüm üretecekseniz C6 : C1000 aralığındaki tüm hücreler yerine, C6 : C11 i dinamik olarak tanımlayan Dinamik Alan Ad Tanımlaması yapıp formülde kullanmak UYGUN olacaktır.
2 - En UYGUN çözüm ne derseniz de dosyanıza göre en uygun çözüm MAKRO ile çözüm olacaktır.
 
52779 Hocam ben konu çözüldü diye işaretledim ama işaretlemedi. Allah ilminizi artırsın. 🙏
 
hem formül hem de macro ile çalışan dosya
dener misiniz...
 

Ekli dosyalar

  • Malzeme listesi (Formül ve Kod ile).xlsm
    514.4 KB · Gösterim: 3
F6 daki formül C1,C2,C3 deki kriterlere bakarak direk data sayfasındaki veriden alfabetik gene sıralıyabilir miyiz? Sıralarsakta gene dizi formülümü olur ve çalışma kitabını kasar mı?
Bu sorunuza da cevap olarak,

Excel2016 için, Dediğim gibi Makro ile çözüm en uygun çözüm olacaktır.
Yine de, formülle çözümü kullanacağım derseniz, dosyanız ektedir incelersiniz.

DİZİ Formül YOK. Ama yine de dizi formül mantığında çalışmakta.
Ad Tanımlamalarıyla Dinamik Alanlar oluşturuldu ve formüllerde kullanıldı.

Resim olarak şöyle...
R119.png

B6 hücresinde
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

formülü var,
Bu formülde
İNDİS(TrhD; kısmındaki TrhD yerine MalzD yazıp C6 hücresine, AdD yazıp D6 hücresine yazıldı.
Formüller 1000. satıra kadar kopyalandı.

Benzersizler için ise, zaten mevcut olan, Liste Sayfasındaki Alfabetik Benzersiz Malzeme Listesinden hareketle formül yazıldı.
F6 hücresinde
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
ve G6 hücresinde
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
formülleri olup çok satıra kopyalamaya gerek yok...Liste sayfasındaki adet kadar kopyalamak yeterli.

Bu dosya diğer dosyaya göre çok çok daha az kasılma yapacaktır. Çalışmak çok daha rahat olacaktır.
 

Ekli dosyalar

  • Malzeme listesi.xlsx
    530.1 KB · Gösterim: 1
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst