52779

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Soruya nasıl bir başlık yazacağımı şaşırdım.

Soru aşağıdaki resimde açıklanmıştır.

R01.webp
 

Ekli dosyalar

Çözüm
Merhaba , bir yerden başlamak lazım diyerek bir çözüm sağlamaya çalıştım. Daha makul çözümler elbette gelecektir.
İki farklı LAMBDA işlevi kullanarak çözüm denendi.
@ezelk
Selamlar,
Merhaba , bir yerden başlamak lazım diyerek bir çözüm sağlamaya çalıştım. Daha makul çözümler elbette gelecektir.
İki farklı LAMBDA işlevi kullanarak çözüm denendi.
Çok teşekkür ediyorum...
Çok sevindiğimi söylemeliyim.

Bugün, bu soru için, ben de epeyce bir uğraştım. Sonunda,
** aklımın bir tarafındaki, BüyükHarf ve KüçükHarfin ÖZDEŞ olmalarına dayalı olarak, Harf ve Sayıların bulunduğu formülü hatırladım ve onu kullandım.
** sizin karakterleri bir hücreye yazıp, o hücreyi referans gösterdiğiniz yolu da kontrol amaçlı olarak kullandım.

Birazdan çözümü detaylı yazmaya çalışacağım.
BüyükHarf ve KüçükHarfin ÖZDEŞ olmalarına dayalı olarak, Harf ve Sayıların bulunduğu formülü de detaylı yazmaya çalışacağım. Becerebilirsem tabi ki...

Çok ama çok teşekkür ediyorum....

Bir teşekkür de Power Query için.
Bir de PowerQuery ile çözüm ekliyorum. Kaynak veri değişince YENİLE yapılması gerekmekte.
PowerQuery konusunda hiç deneyimim olmadı. Ama ilk fırsatımda bu konuyu öğrenmeye çalışacağım. O zaman bu dokumanı da detaylı incelerim...

Teşekkürlerimle...
 
@ezelk
Selamlar,

Çok teşekkür ediyorum...
Çok sevindiğimi söylemeliyim.

Bugün, bu soru için, ben de epeyce bir uğraştım. Sonunda,
** aklımın bir tarafındaki, BüyükHarf ve KüçükHarfin ÖZDEŞ olmalarına dayalı olarak, Harf ve Sayıların bulunduğu formülü hatırladım ve onu kullandım.
** sizin karakterleri bir hücreye yazıp, o hücreyi referans gösterdiğiniz yolu da kontrol amaçlı olarak kullandım.

Birazdan çözümü detaylı yazmaya çalışacağım.
BüyükHarf ve KüçükHarfin ÖZDEŞ olmalarına dayalı olarak, Harf ve Sayıların bulunduğu formülü de detaylı yazmaya çalışacağım. Becerebilirsem tabi ki...

Çok ama çok teşekkür ediyorum....

Bir teşekkür de Power Query için.

PowerQuery konusunda hiç deneyimim olmadı. Ama ilk fırsatımda bu konuyu öğrenmeye çalışacağım. O zaman bu dokumanı da detaylı incelerim...

Teşekkürlerimle...
Rica ederim. Dediğim gibi bir yerden başlamak gerek. Muhtemelen yine sizden arşivlik bir çözüm gelecektir.
İyi akşamlar, kolay gelsin.
 
Epey uğraştığım çözümü detaylı anlatmaya çalışırsam.....

R02.webp


çözüme ulaştığım formül şöyle...

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

Sırasıyla yazmaya çalışırsam

** PARÇAAL(KÜÇÜKHARF(alan);SIRALI(;MAK(UZUNLUK(alan)));1)
formülü ile, B4 : B8 aralığındaki tüm metinlerin (Harfler Küçük Harf olarak) bir - bir karakterlerini yazdırıyoruz. (Burada her bir hücrenin karakter uzunluğundan ziyade, maksimum uzunluk kullanıldı.
Sonuçta elde edilen...
1665347625592.webp


*** ÖZDEŞ(KÜÇÜKHARF("x");BÜYÜKHARF("x")) formülü ile
Harf, küçük ve büyük harf değerleri arasında farklı değerlere sahip bir karakter olduğundan, örneğin "x" harfini ele alırsak ve =ÖZDEŞ(KÜÇÜKHARF("x");BÜYÜKHARF("x")) formülünü yazarsak, bu bize sonuç olarak YANLIŞ değeri üretiyor. DOĞRU değeri üretiyorsa eğer, bu bir Harf olmayıp, ya RAKAM ya da diğer karakterlerdir.
Şimdi, Bu işlemi DEĞİL işlevine sararsak DEĞİL(ÖZDEŞ(KÜÇÜKHARF("x");BÜYÜKHARF("x"))) bu bize DOĞRU değerini döndürecek ve Harfleri bulmamızı sağlayacak.

O zaman, Rakamları da ESAYIYSA işlevi ile bulabildiğimiz için, soruda da Rakam ve harfler istendiğinden,
PARÇAAL işleviyle elde edilen diziyi, MAP - LAMBDA ile, (Sayı olacak şekilde), 1 ve 0 elde edecek şekilde yazıyoruz.

--MAP(a;LAMBDA(x;YADA(ESAYIYSA(--x);EĞERHATA(ONDALIK(x;36)<16;0)*DEĞİL(ÖZDEŞ(KÜÇÜKHARF(x);BÜYÜKHARF(x))))))

ESAYIYSA
ile Rakam olup olmadığının kontrolü yapılıyor.
DEĞİL(ÖZDEŞ(KÜÇÜKHARF(x);BÜYÜKHARF(x))) ile Harf olup olmadığının kontrolü yapılıyor.
EĞERHATA(ONDALIK(x;36)<16;0) ile Harflerin Base36 olarak 36 tabanında a=10, b=11.... f=15 e karşılık geldiğinden (ya da Hexadecimal sistemde, 16 tabanında, F=15 olmakta) harflerin a, b, c, d, e, f olanlarını alıp, diğerlerini almama koşulunun kontrolü yapılıyor. Ve dizi oluşturuluyor.

1665348698765.webp


Bu elde edilen dizide, 1 ler koşulu sağlayanlar ve 0 lar ise koşula uymayanlar olmakta.

*** BYROW(EĞER(b;a;"");LAMBDA(s;ARALIKBİRLEŞTİR(s)))
Elde edilen dizide, 1 olanlara Metinlerdeki Harf ya da Rakam karşılıkları ve 0 olanlara da "" değeri yazdırılıp, bu değerler ARALIKBİRLEŞTİR işlevi ile birleştiriliyor. Harf ve Rakamlardan oluşan dizi elde ediliyor.

1665349090368.webp



*** REDUCE(z;PARÇAAL("0123456789";SIRALI(10);1);LAMBDA(x;y;YERİNEKOY(x;y;"*")))
formülü ile de, elde edilen dizideki her bir rakamın yerine "*" işareti konuluyor... Ve üst resimdeki sonuç elde ediliyor.
 

Ekli dosyalar

@okutkan
Selamlar,


Çok çok teşekkür ediyorum...

Makro fakiri olduğumdan nasıl bir yorum yapabilirim bilmiyorum. Ancak, alternatif bir çözüm olması açısından, denedim, sonuçlarını kontrol ettim ve arşivime ekledim çözümünüzü...

Teşekkürlerimle...
Önceki kodu arşivden çıkarıp aşağıdaki kodu eklerseniz, kodu daha kolay anlayabilirsiniz:) Gereksiz olduğunu farkettiğim koşulun birisini koddan çıkarttım ve bazı alanları kısalttım.
VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(18 satır)
 

Ekli dosyalar

  • 52.xlsm
    52.xlsm
    19.6 KB · Görüntüleme: 2
@okutkan
Selamlar,

Çok teşekkür ediyorum...
Hemen değiştirip, arşivime alıyorum...

VBA, öğrenmek için tam ilk adımı atmıştım ki, 365 LAMBDA işlevleri çıktı. Öğrenme işi şimdilik askıya alındı bende...
Aklımın bir tarafına yazdım... Öğrenmeye niyetlenince ilk bu dosyaya bakacağım...

Çok ama çok teşekkür ediyorum...
Saygılarımla...
 
Selamlar,
Konuya katkıda bulunan herkese çok teşekkür ediyorum.
Ve söylemek isterim ki, çözümlerin tamamı benim için çok değerli. Gönlüm istiyor ki, tamamını en güzel Çözüm olarak işaretlemek. Ancak birini işaretlemek gerektiğinden, ben de soruya verilen ilk cevabı işaretliyorum müsaadelerinizle.

Saygılarımla..
 
Üst