Excel'de çift saymadan nitelendirilen girişler için toplam değerler


1

Her biri bir ilişkili sayısal değere sahip bir metin dizeleri koleksiyonuna sahibim. "Nitelikli" olan bu girişler için ilişkili sayısal değerleri toplamam gerekiyor. Bir metin girişi, belirlenmiş herhangi bir veya daha fazla hedef dizgiyi içererek kalifiye olur. Bir giriş potansiyel olarak birkaç hedef dizeyi veya bir hedef dizgiyi bir kereden fazla içerebilir. Ancak, giriş, hedeflerin herhangi biriyle veya hedeflerin kombinasyonlarıyla herhangi bir eşleşmeyi içeriyorsa uygunsa, giriş için ilişkilendirilmiş değeri yalnızca bir kez toplamak istiyorum.

Örneğin, hücreler ki A1: A3, sırasıyla içerir apple, banana, pear, ve B1: B3 her dizi içerir 1. Arama hedeflerim ave p. Her üç metin girişi de kalifiyedir çünkü her biri hedeflerden en az birinin en az bir örneğini içerir. B sütununda ilgili değerlerin toplanması sonucunu döndürmelidir 3.

Bunu SUMIF ve joker karakterleri kullanarak denedim. Bu örnek için formülüm:

=SUM(SUMIF(A:A, {"*a*", "*p*"}, B:B))

Ancak, bu, birden fazla hedefle eşleşen girişleri çift sayar. Bu durumda, üçü de içerir ave ikisi de içerir p, bu nedenle toplamı oluşturur 5.

Çift sayım girişleri olmadan bunu nasıl başarabilirim?


1
SUMIFmetin saymaz. Ve ölçütler için bir dizi sabiti ile, gösterdiğiniz şekliyle formülünüzle iyi bir sonuç elde edemezsiniz. Ayrıca değişkenler bir dizi sabitinde kullanılamaz. Verilerinize gerçek bir örnek vermek, formül, gerçek ve beklenen sonuçlar daha yararlı olacaktır. Bunu bir yorum ekleyerek değil sorunuzu düzenleyerek ekleyin.
Ron Rosenfeld

Bu soruyu çok ilginç buluyorum, bazı mükemmel sihirbazların ortaya çıkıp parkın dışına çıkmasını umuyorum.
Raystafarian 19

Sorunuzu ve sormak istediğinizi düşündüğüm bir düzenlemeyi yaptım, geri dönmekten çekinmeyin
Raystafarian

@Raystafarian Düzenlemenizi anlamıyorum. Joker karakterler olmadan, örneğinizin 0 olacağını düşünmüştüm. Saymanın başarılı olduğu yerlere bir örnek vermeye çalışıyor musunuz? Başarısızlık davası için bir örnek vermeye çalışıyordum.
Ninjakannon

Başarılı bir örnek sağlamakta fayda var. Aramadaki joker karakterler veya "joker" hücrelerde arama yapıyor musunuz - belirsizdi.
Raystafarian

Yanıtlar:


1

Kriterlerinizin çalışma formundaki gerçek hücrelerde olması, kodlanmış formül içinde değil, daha esnek.

Eğer bir kullanımı ise dikey hücreleri (örneğin, bitişik dizi H1:H2bu amaçla) ve varsayılarak Range a, dikey aralık, bu kullanabilir dizi formülünü ** :

=SUM(IF(MMULT(0+ISNUMBER(SEARCH(TRANSPOSE(Criteria),Range)),ROW(Criteria)^0)>0,Values))

Kriterleri formülde kullanmakta ısrar ediyorsanız, o zaman:

=SUM(IF(MMULT(0+ISNUMBER(SEARCH({"p","a"},Range)),{1;1})>0,Values))

Saygılarımızla


1
Bu çözüm işe yarıyor, ancak bir Excel uzmanı olmayan herkes için nasıl ve neden çalıştığını anlamak veya belirli bir soruna uyarlamakta zorlanacaklardı. Yararlı olması için, gerçek bir çalışma örneğine ve bazı açıklamalara ihtiyacı var.
fixer1234

1

İşte nispeten basit bir çözüm. İlişkili değerlerin tümü 1ile istenen sonucu üretir 3, ancak doğru değerlerin seçildiğini ve iyi bir ölçüm için eşleşmeyen bir girdi içerdiğini göstermek için farklı değerler atadım.

görüntü tanımını buraya girin

Girişlerin listesi C sütununda ve bunlarla ilişkili değerler D sütunundadır. Sonuç E1'dedir.

Sadece belirli işlevler joker karakterleri kullanabilir, bu nedenle hedef dizge için ARAMA'yı kullanır.

Birden fazla OR kriterini ele almak için tipik yöntem, her testin sonucunu eklemek. Bununla birlikte, bu maddeler birden fazla kritere uyduğunda iki katına çıkar. Bunu çözmek için, toplam ölçüt testleri, toplamın sıfırdan büyük olup olmadığını görmek için kontrol edilir ve bununla ilişkili değerle kullanılan şeydir.

Hedef arama dizelerini bir dizi olarak kullanmak karmaşıklaşır, çünkü bu tür formüller için kullanılan ortak fonksiyonlar bir sonraki terime uygulamadan önce tüm dizi için bir sonuç hesaplar. Bu yüzden her kriteri ayrı ayrı ele aldım. Daha fazla kriter ISNUMBER(SEARCH("target",range))için, >0testten önce parantez içindeki her birine bir tane daha ekleyin .

SUMPRODUCT, dizi tarzı hesaplamaları normal, dizi olmayan bir formülle yapar.

E1'deki formül:

=SUMPRODUCT(((ISNUMBER(SEARCH("p",C1:C4))+ISNUMBER(SEARCH("a",C1:C4)))>0)*D1:D4)

Cevabınız için teşekkürler! Bu gerçekten yardımcı olur. Sorgunuzu önemsiz sayıda arama terimleri için genelleştirmek mümkün mü, yani bunların tekrarlarını ISNUMBERve alt terimlerini yinelemekten kaçınmak için ?
Ninjakannon

@ Ninjakannon, ne yazık ki, bu yaklaşım her hedef için bir formül girişi gerektiriyor. Çok sayıda varsa, XOR LX'in cevabı bir hedef listesi gibi ele alacaktır, bu yüzden daha ölçeklenebilir.
fixer1234

0

Bunun bir SUMPRODUCT(--formül olacağını düşünmüştüm , ancak çalışmasını sağlayamıyorum. Bu olsa çalışması gerekir -

=SUM(IF(FREQUENCY(IF(NOT(ISERR(SEARCH({"d","g"},A2:A10))),ROW(A2:A10)),ROW(A2:A10))>0,1))

{"d","g"}Arama dizelerinin dizisi nerede olacak.

Bu bir dizi formülüdür, bu yüzden içine koyduğunuzda ctrl+ shft+ tuşlarına entrbasmanız gerekir ve tüm fonksiyonun etrafındaki formül çubuğunda küme parantezleri görünmelidir.

Unutmayın, yalnızca tek bir sütunda arama yapıyorsanız çalışacaktır.

Jokerleri göz önünde bulundurarak bunun da işe yaramayacak olması mümkün. Belki regex ihtiyacınız olan şeydir?


Yedi katman yeterli olamaz. Daha derine! Daha derine!
JaredT

Bunun, soruyu zorlaştırdığını sanmıyorum. İlişkili değerleri toplamaz ve arama terimlerini en azından XOR LX'in cevabında olduğu gibi bir matris yaklaşımı olmadan bir dizi olarak ele alarak elde edebileceğinizi sanmıyorum.
fixer1234
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.