• 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ü topla.çarpım hücreden karşılaştırma

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.

Merakli_72

Yeni Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
28 Nis 2022
Mesajlar
37
Çözümler
3
Aldığı beğeni
23
Excel V
Office 365 TR
Konuyu Başlatan
Selam,
Açıklama tablo içindedir
 

Ekli dosyalar

  • örnek dosya.xlsx
    13.8 KB · Gösterim: 11
Çözüm
Alternatif olsun..
R109.png

=, >, >=, <, <=,<> gibi işleçlerin hücreye başvurularak alınmaları, Ancak, EĞERSAY, ETOPLA, ÇOKETOPLA, ÇOKEĞER işlevleri, VSEÇ işlevleri gibi işlevler kullanılarak alınabilir. Direkt olarak TOPLA, TOPLA.ÇARPIM gibi işlevlerde hücreden alınabilmesi mümkün değildir.
** Ayrıca söz konusu olan EĞERSAY, ETOPLA... vs gibi işlevler de hücre referans aralıklarını kullanarak çalışırlar. Hücre aralıklarında herhangi bir işlem ile çalışmazlar, çünkü dizi ile çalışmazlar.
İstediğiniz olay Stok * Fiyat kolonlarının çarpımlarının toplamı olduğundan, J2 : J8 ya da K2 : K8 tek başlarına hücre referans aralığıdır. Ancak J2 : J8 * K2 : K8 çarpımlarını aldığınızda referans aralığı olmaktan çıkar ve bir...
Deneyiniz.
 

Ekli dosyalar

  • örnek dosya.xlsx
    13.4 KB · Gösterim: 6
Sayın Patron
sanırım konuyu anlatamadım
2, 6 ve 8. satırda A.Raif firması var
bunlardan günstok şartını sağlayan (D1 ile E1 hücrelerindeki şart)
6 ve 8. satırdakiler
(6*3)+(8*4)=50
sonucunu vermeli

Topla.çarpım fonksiyonunda karşılaştırma operatörü olarak (<.>,>= vb)
Çokeğersay,çoketopla vb. gibi hücreden referans alamıyorum bu yüzden bir çözüm bulamadım

Saygılarımla
 
Dosyayı indirip incelemediniz mi?
çalışıyor.
1703080373894.png
 
Kusura bakmayın E2 hücresi değiştirildiği için 18 hesaplamış
doğru sonucu buluyor
Fakat her karşılaştırma operatörü için Eğer yazmak benim asıl formülümü kontrol edilemeyecek kadar büyütecek
karşılaştırma op.direk hücre referansından alabilmek gibi kısa bir yol bulma hayalim var
 
dener misiniz...
 

Ekli dosyalar

  • örnek dosya.xlsx
    10.3 KB · Gösterim: 4
Alternatif olsun..
R109.png

=, >, >=, <, <=,<> gibi işleçlerin hücreye başvurularak alınmaları, Ancak, EĞERSAY, ETOPLA, ÇOKETOPLA, ÇOKEĞER işlevleri, VSEÇ işlevleri gibi işlevler kullanılarak alınabilir. Direkt olarak TOPLA, TOPLA.ÇARPIM gibi işlevlerde hücreden alınabilmesi mümkün değildir.
** Ayrıca söz konusu olan EĞERSAY, ETOPLA... vs gibi işlevler de hücre referans aralıklarını kullanarak çalışırlar. Hücre aralıklarında herhangi bir işlem ile çalışmazlar, çünkü dizi ile çalışmazlar.
İstediğiniz olay Stok * Fiyat kolonlarının çarpımlarının toplamı olduğundan, J2 : J8 ya da K2 : K8 tek başlarına hücre referans aralığıdır. Ancak J2 : J8 * K2 : K8 çarpımlarını aldığınızda referans aralığı olmaktan çıkar ve bir dizi olur. Bu durumda da ÇOKETOPLA gibi bir işlev çalışmayacaktır.

O nedenle de istediğiniz olay için, ya dolaylı bir yol kullanılır, ya da, yardımcı kolonlar kullanılarak çözüm sağlanabilir.

Direkt hesaplama için formül (dolaylı bir yol) : TOPLA.ÇARPIM işlevinin içerisinde ÇOKEĞERSAY kullanımı
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Dosyanızda,
1 - C2 hücresindeki formül değiştirildi. ""(BOŞ) olma durumu eklendi ki, bu durumda Tüm firmalar değerlendirilir.
2 - Yardımcı kolonlarla çözümler eklendi.
3 - Dinamik olarak, ad tanımlamalarıyla çalışan TOPLA.ÇARPIM kullanımı da eklendi.

Dosyanız ektedir... İncelersiniz...
 

Ekli dosyalar

  • örnek dosya.xlsx
    16.9 KB · Gösterim: 1
Çözüm
Dostlarım açıklamalarınız ve yardımlarınız için çok teşekkür ederim
iyiyi yardımsever insanlar var
 
Deneyiniz.
--Sarı alanlar eklendi.
 

Ekli dosyalar

  • örnek dosya.xlsx
    16 KB · Gösterim: 2
Alternatif olsun..
Ekli dosyayı görüntüle 22562

=, >, >=, <, <=,<> gibi işleçlerin hücreye başvurularak alınmaları, Ancak, EĞERSAY, ETOPLA, ÇOKETOPLA, ÇOKEĞER işlevleri, VSEÇ işlevleri gibi işlevler kullanılarak alınabilir. Direkt olarak TOPLA, TOPLA.ÇARPIM gibi işlevlerde hücreden alınabilmesi mümkün değildir.
** Ayrıca söz konusu olan EĞERSAY, ETOPLA... vs gibi işlevler de hücre referans aralıklarını kullanarak çalışırlar. Hücre aralıklarında herhangi bir işlem ile çalışmazlar, çünkü dizi ile çalışmazlar.
İstediğiniz olay Stok * Fiyat kolonlarının çarpımlarının toplamı olduğundan, J2 : J8 ya da K2 : K8 tek başlarına hücre referans aralığıdır. Ancak J2 : J8 * K2 : K8 çarpımlarını aldığınızda referans aralığı olmaktan çıkar ve bir dizi olur. Bu durumda da ÇOKETOPLA gibi bir işlev çalışmayacaktır.

O nedenle de istediğiniz olay için, ya dolaylı bir yol kullanılır, ya da, yardımcı kolonlar kullanılarak çözüm sağlanabilir.

Direkt hesaplama için formül (dolaylı bir yol) : TOPLA.ÇARPIM işlevinin içerisinde ÇOKEĞERSAY kullanımı
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Dosyanızda,
1 - C2 hücresindeki formül değiştirildi. ""(BOŞ) olma durumu eklendi ki, bu durumda Tüm firmalar değerlendirilir.
2 - Yardımcı kolonlarla çözümler eklendi.
3 - Dinamik olarak, ad tanımlamalarıyla çalışan TOPLA.ÇARPIM kullanımı da eklendi.

Dosyanız ektedir... İncelersiniz...
Sayın 52779
=TOPLA.ÇARPIM(((EĞER(C2="";1;SOLDAN(KIRP(H2:H8);UZUNLUK(C2))=C2))*ÇOKEĞERSAY(I2:I8;I2:I8;I2:I8;D2&E2)>0)*J2:J8*K2:K8)
bu formül benim için devrim oldu adeta fakat mantığını pek anlayamadım özellikle
(EĞER(C2="";1;SOLDAN(KIRP(H2:H8);UZUNLUK(C2))=C2))*ÇOKEĞERSAY(I2:I8;I2:I8;I2:I8;D2&E2)>0)
:) çokeğersay kısmını >0 şartı neyi sağlıyor rica etsem müsait bir zamanınızda ayrıntılı anlatma imkanınız olabilir mi?
 
Anlatım biraz Uzun olacak... Çünkü detaylar biraz fazlaca...

Formüle geçmeden, öncelikle, seçimlerinizden bahsedelim.
R110.png
Formülünüzde, SOLDAN işleviyle B2 hücresindeki seçime göre, A2 hücresindeki ibarenin * karakterine kadarki bölüm alınmaktaydı. * da Joker karakter olduğundan * karakterinin kendisinin aranabilmesi için önüne ~ (tilde ya da yaklaşık) işareti konulmakta idi.

D2 hücresinde, işleç seçilmekte ve E2 hücresine de değer yazılmakta. Sonuçta elde edilecek olayın D2&E2 şeklinde olması istenmekte. Yani resme göre <=150 olması istenmekte. İşleç seçimi de D2 hücresindeki açılır listeden yapılmakta. Bu durumda, seçilen işlecin D2 hücresine başvuru ile hücreden alınması istenmekte...

Hesaplanacak tablo ise
R111.png
şeklinde olup, koşullara uyanlar için Stok * Fiyat kolonlarının çarpımlarının toplamı istenmekte...

İşleçlerin hücreden alınabilmesi için, işlevlerde "<", "<=", "=", ...vs gibi tırnak içerisinde yazılabilen işlevler kullanılmalı... Bu da bize kullanılacak işlevlerin ancak ve ancak EĞERSAY, ETOPLA, ÇOKETOPLA, ÇOKEĞER li işlevler.... olmasını gerektirir.

Örnek verirsek, D2 ve E2 deki koşulları tablodaki gün kolonu için uygularsak, <=150 gün olanların adedi nedir dersek.
=EĞERSAY(I2:I8 ; "<="&E2) şeklinde yazarız. Burada "<=" tırnak içerisinde yazılmıştır. Demek ki biz bu değeri hücreden aldırabiliriz. Yani, formülü "<=" işlecini D2 hücresinden aldırarak, =EĞERSAY(I2:I8 ; D2&E2) şeklinde yazabiliriz.

Bir örnek daha verelim
firma için A.RAIF* ile başlayanlardan, <=150 gün (D2&E2 gün) olanların Fiyat Toplamlarını hesaplayalım.
ÇOKETOPLA işlevini kullanabiliriz.
2 durum var...
1. durum : * işareti Joker karakter olduğundan * işaretinin kendisini arattıracağımız için yaklaşık işaretini önüne koymalıyız.
Yani arattırılacak olan C2&"~**" şeklinde olmalı. ilk * işaretinden önce ~ işareti var. Bu durumda bizzat * aranacaktır. İkinci * işaretinden hemen önce ise ~ işareti olmadığından Joker karakter olup, ...ile başlayıp arkasından başka karakterler gelebilir anlamındadır.
Yani, C2&"~*" , A.RAIF ile başlayıp, A.RAIF* ibaresinden sonra başka karakteristikler olabilir anlamındadır.(A.RAIF*1* gibi örneğin)
2. durum : <=150 değerini hücrelerden aldıracağız. Bu durumda D2&E2 olacak.

Bu durumda formül
=ÇOKETOPLA(K2:K8;H2:H8;C2&"~**";I2:I8;D2&E2)
şeklinde olup, 7 sonucunu verecektir.
Koşulları sağlayanlar, A.RAIF*2* için 3 + A.RAIF*3* için 4

Şimdi, önemli bir kısım olan
Bu ÇOKETOPLA, EĞERSAY.... işlevlerinin gerekliliklerine ve sonuçlarına bakalım.
1 - Sonuç olarak bize, SONUÇ olarak TEK bir hücrede değer üretir.
2 - İşlevlerin söz dizilimlerine bakıldığında İŞLEV( hücre aralığı ; kriter....) şeklindedir. Yani bizzat hücre arlıkları kullanılmalıdır.
Örnek vererek açıklarsak,
Sizin isteğiniz olan sonuc için, yani
firma için A.RAIF* ile başlayanlardan, <=150 gün (D2&E2 gün) olanların Stok ve Fiyat çarpımlarının Toplamlarını hesaplayalım.
Şöyle bir formül yazalım, (mantık olarak doğru...)
=ÇOKETOPLA(J2:J8 * K2:K8 ;H2:H8;C2&"~**";I2:I8;D2&E2)
formül çalışmayacaktır.
Çünkü, tek başına J2 : J8 ve tek başına K2 : K8 hücre arlıklarıdır. Ancak ise hücre aralıklarına bir işlem uygulanmış olup, hücre aralığından çıkar ve bir dizi oluşturur. Sonuçta, formül, hücre aralığı ile çalışacağından, yazılan bu formül çalışamayacaktır.
Eğer şöyle yapsaydık,

R112.png
Stok * Fiyat değerlerini L2 : L8 aralığında hesaplattırıp yazsaydık. O zaman L2 : L8 bir hücre aralığı olacaktı.
Formülde de J2 : J8 * K2 : K8 ibaresi yerine L2 : L8 olan hücre aralığı kullanılacaktı ve formül çalışacaktı.

Şimdi tüm bunlardan yola çıkarak,
=TOPLA.ÇARPIM(((EĞER(C2="";1;SOLDAN(KIRP(H2:H8);UZUNLUK(C2))=C2))*ÇOKEĞERSAY(I2:I8;I2:I8;I2:I8;D2&E2)>0)*J2:J8*K2:K8)
formülünün açıklamasını yapmaya çalışalım.
stok ve fiyat kolonlarının çarpımlarının toplamları isteniyor. Dolaylı bir yol kullanacağız.
TOPLA.ÇARPIM işlevi içerisinde, işleçlerin alınmasını sağlayabilen bir ÇOKEĞERSAY işlevi kullanacağız.

1 - Sonuç olarak bize, SONUÇ olarak TEK bir hücrede değer üretir.
Bize, tek bir değer değil, tablonun her bir satırı için bir değer gerekmekte, yani bir dizi gerekmekte.
Bu diziyi bir çarpan gibi kullanacağız. Ben bu diziyi I2 : I8 aralığında kullandım. H2 : H8 gibi diğer kolonlar da kullanılabilir.
Dizi şöyle =EĞERSAY(I2:I8;I2:I8) dediğimizde bize dizi olarak
R113.png
şeklinde tablonun her bir satırı için değer üretir. Bu sonuç bize, I2 : I8 aralığındaki her bir satırdaki değerden kaçar adet olduğunu verir. Tablodaki değerlere baktığımızda, 100 değerinden 2 adet, diğerlerinden ise 1 er adet vardır.
Şimdi bu diziyi ÇOKEĞERSAY işlevi içerisinde <=150 (D2&E2) ile kullanırsak
R114.png
<=150 olup, dizi ile çarpımlarının sonucu gelecektir.

Burada, akıllara hemen H2:H8 ; C2&"~*" parametresini (A.RAIF ile başlayanları da bulma) de ekleyip, sonuca gitmek gelecektir.
Yapalım...

Maxi 6 resim eklendiğinden bir sonraki mesajda devam ediyorum...
 
Devam....
Burada, akıllara hemen H2:H8 ; C2&"~*" parametresini (A.RAIF ile başlayanları da bulma) de ekleyip, sonuca gitmek gelecektir.
Yapalım...
R117.png
Sonuçlara baktığımızda, 2. satırda 1 değeri vermekte. Ama Firma, A.RAIF* ile başlamıyor...
Koşul sağlanmıyor. Şu halde neden 1 değeri veriyor.
Çünkü, problem yine TEK Sonuç problemi. H2:H8;C2&"~**" sonucu Doğrudur. Çünkü bu koşulu sağlayan 3 adet değer vardır. 3 > 0 olduğundan ya da 0 dan farklı bir değere sahip olduğundan doğru sonucunu üretip tüm diziyi 1 ile çarpar.

Şu halde, H2:H8;C2&"~**" olayını da bir dizi ile elde etmek gerekir.
Bunu, ÇOKEĞERSAY dışarısına alıyoruz ve C2 de SOLDAN işlevi kullanıldığından dolayı, TOPLA.ÇARPIM formülünün bir parametresi olarak yazıyoruz.

Burada, hemen bir not düşelim.
1 - C2 hücresi BOŞ("") olduğunda TÜM firmaları değerlendirsin dedik ve 1 çarpanı kullandık.
2 - A2 hücresinde * karakteri varsa * dan hemen önceki kısım alınsın dedik.
3 - A2 hücresinde * karakteri yoksa ilk 5 karakterlik kısım alınsın dedik.

Buradaki tüm seçimler tablonuzdaki verilere göre değiştirilebilir. En uygun değer ne ise o seçilebilir. Metinlere göre...

Evet devam edersek,
C2 de elde edilen metine göre SOLDAN işlevini yazdığımızda
* gibi Joker karakter geçersiz olup Eşitliğe bakılacaktır.
Eşitlik olarak da, firma kolonundaki firmaların, C2 kaç karakterse, o kadar ilk karakteri alınacak ve C2 ye eşitliğine bakılacak.

Yapalım...
R115.png
Koşullarımızı sağlayanlar ortaya çıkmış oldu.
A.RAIF*2* ve A.RAIF*3* koşullarımızı sağlamakta...
Dikkat edersek, en son satırda 2 yazmakta. Sebebi, ilk elde ettiğimiz dizide, 100 değerinden 2 adet olduğundan dolayı 2 ile çarpılarak gelmekte. Yani yazılan dizideki değer bir çarpan olarak <=150 koşulunu sağlayanlara işlem yapmakta.

Bize bu sonuçların DOĞRU ya da YANLIŞ (ya da 1 veya 0 olmasına) olmasına ihtiyaç var. Yani bunlar da bir çarpan olacaktır.
O halde eşitliğe >0 olup olmadıklarına göre bakılacak ve değer alınacaktır.
Yaparsak
R116.png
ve bu sonuçları da TOPLA.ÇARPIM işlevinde, J2 : J8 ve K2 : K8 değerleriyle çarpıp sonuca ulaşıyoruz....

Umarım açıklayabilmişimdir.
 
Çok teşekkür ediyoruö
Devam....

Ekli dosyayı görüntüle 22592
Sonuçlara baktığımızda, 2. satırda 1 değeri vermekte. Ama Firma, A.RAIF* ile başlamıyor...
Koşul sağlanmıyor. Şu halde neden 1 değeri veriyor.
Çünkü, problem yine TEK Sonuç problemi. H2:H8;C2&"~**" sonucu Doğrudur. Çünkü bu koşulu sağlayan 3 adet değer vardır. 3 > 0 olduğundan ya da 0 dan farklı bir değere sahip olduğundan doğru sonucunu üretip tüm diziyi 1 ile çarpar.

Şu halde, H2:H8;C2&"~**" olayını da bir dizi ile elde etmek gerekir.
Bunu, ÇOKEĞERSAY dışarısına alıyoruz ve C2 de SOLDAN işlevi kullanıldığından dolayı, TOPLA.ÇARPIM formülünün bir parametresi olarak yazıyoruz.

Burada, hemen bir not düşelim.
1 - C2 hücresi BOŞ("") olduğunda TÜM firmaları değerlendirsin dedik ve 1 çarpanı kullandık.
2 - A2 hücresinde * karakteri varsa * dan hemen önceki kısım alınsın dedik.
3 - A2 hücresinde * karakteri yoksa ilk 5 karakterlik kısım alınsın dedik.

Buradaki tüm seçimler tablonuzdaki verilere göre değiştirilebilir. En uygun değer ne ise o seçilebilir. Metinlere göre...

Evet devam edersek,
C2 de elde edilen metine göre SOLDAN işlevini yazdığımızda
* gibi Joker karakter geçersiz olup Eşitliğe bakılacaktır.
Eşitlik olarak da, firma kolonundaki firmaların, C2 kaç karakterse, o kadar ilk karakteri alınacak ve C2 ye eşitliğine bakılacak.

Yapalım...
Ekli dosyayı görüntüle 22593
Koşullarımızı sağlayanlar ortaya çıkmış oldu.
A.RAIF*2* ve A.RAIF*3* koşullarımızı sağlamakta...
Dikkat edersek, en son satırda 2 yazmakta. Sebebi, ilk elde ettiğimiz dizide, 100 değerinden 2 adet olduğundan dolayı 2 ile çarpılarak gelmekte. Yani yazılan dizideki değer bir çarpan olarak <=150 koşulunu sağlayanlara işlem yapmakta.

Bize bu sonuçların DOĞRU ya da YANLIŞ (ya da 1 veya 0 olmasına) olmasına ihtiyaç var. Yani bunlar da bir çarpan olacaktır.
O halde eşitliğe >0 olup olmadıklarına göre bakılacak ve değer alınacaktır.
Yaparsak
Ekli dosyayı görüntüle 22594
ve bu sonuçları da TOPLA.ÇARPIM işlevinde, J2 : J18 ve K2 : K18 değerleriyle çarpıp sonuca ulaşıyoruz....

Umarım açıklayabilmişimdir.
Emeğiniz ve gönül zenginliğiniz için çok teşekkür ediyorum müsait bir zamanda en in
ce ayrıntısına kadar inceleyeceğim
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst