Excel képlet: Számolja meg azokat a cellákat, amelyek nem tartalmaznak sok karakterláncot

Tartalomjegyzék

Általános képlet

(=SUM(1-(MMULT(--(ISNUMBER(SEARCH(TRANSPOSE(exclude),data))),ROW(exclude)^0)>0)))

Összegzés

A sok különböző karakterláncot nem tartalmazó cellák megszámolásához meglehetősen összetett képletet használhat az MMULT függvény alapján. A bemutatott példában az F5 képlete a következő:

(=SUM(1-(MMULT(--(ISNUMBER(SEARCH(TRANSPOSE(exclude),data))),ROW(exclude)^0)>0)))

ahol az "adatok" a B5: B14 elnevezett tartomány, az "kizárás" pedig a D5: D7 nevű tartomány.

Megjegyzés: ez egy tömbképlet, amelyet a control + shift + enter billentyűkombinációval kell megadni

Előszó

Ezt a képletet bonyolítja a "tartalmaz" követelmény. Ha csak képletre van szükség a sok dologgal nem egyenlő cellák számlálásához, használhat egy egyszerűbb képletet a MATCH függvény alapján. Továbbá, ha korlátozott számú karakterláncot kell kizárnia, akkor a COUNTIFS függvényt használhatja a következőképpen:

=COUNTIFS(data,"*pink*",data,"*orange*",data,"*black*")

Ezzel a megközelítéssel azonban minden kizárandó karakterlánchoz meg kell adnia egy új tartomány / kritérium argumentumot. Ezzel szemben az alábbiakban ismertetett képlet nagyszámú, közvetlenül a munkalapra beírt sztringet képes kezelni.

Végül ez a képlet összetett. Mondja meg, hogy van-e egyszerűbb képlete a javaslatra :)

Magyarázat

Ennek a képletnek a lényege a SZÁM és a KERESÉS:

ISNUMBER(SEARCH(TRANSPOSE(exclude),data))

Itt átültetjük a "kizárás" nevű tartományba tartozó elemeket, majd az eredményt a SEARCH-ra "keresőszövegként", az "adatok" pedig "szövegen belül" betápláljuk. A KERESÉS függvény egy 2D-s TRUE és FALSE érték tömböt ad vissza, 10 sorral, 3 oszloppal, így:

(3,#VALUE!,12;#VALUE!,4,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,3;14,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;#VALUE!,#VALUE!,#VALUE!;3,#VALUE!,12)

Az "adatok" minden egyes értékéhez 3 találatunk van (keresési karakterlánconként egy), amelyek #VALUE hibák vagy számok. A számok a megtalált szöveges karakterlánc helyzetét, a hibák pedig a nem található szöveges karakterláncokat jelentik. Egyébként a TRANSPOSE funkcióra van szükség a teljes eredmények 10 x 3 tömbjének előállításához.

Ezt a tömböt betoldják az ISNUMBER-be, hogy IGAZ HAMIS értékeket kapjanak, amelyeket kettős negatív (-) operátorral konvertálunk 1s-re és 0-ra. Az eredmény egy ilyen tömb:

(1,0,1;0,1,0;0,0,0;0,0,0;0,0,1;1,0,0;0,0,0;0,0,0;0,0,0;1,0,1)

amely az MMULT függvénybe tömbként1 kerül. A mátrixszorzás szabályait követve az 1. tömb oszlopainak számának meg kell egyeznie a 2. tömb sorainak számával. A 2. tömb előállításához a ROW függvényt használjuk így:

ROW(exclude)^0

Ez 1s tömböt eredményez, 3 sor 1 oszloppal:

(1;1;1)

ami tömb2- ként megy az MMULT-ba . A tömb szorzás után egy tömböt méretezünk, hogy megfeleljen az eredeti adatoknak:

(2;1;0;0;1;1;0;0;0;2)

Ebben a tömbben bármely nem nulla szám olyan értéket képvisel, ahol a kizárt karakterláncok közül legalább az egyik megtalálható. A nullák azt jelzik, hogy nem található kizárt karakterlánc. Az összes nem nulla érték 1-re kényszerítéséhez nullánál nagyobb értéket használunk:

(2;1;0;0;1;1;0;0;0;2)>0

ami még egy tömböt, vagy TRUE és FALSE értékeket hoz létre:

(TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE)

Végső célunk, hogy csak olyan szöveges értékeket számoljunk, ahol nem találhatók kizárt karakterláncok, ezért ezeket az értékeket meg kell fordítanunk. Ezt úgy tesszük, hogy kivonjuk a tömböt az 1-ből. Ez egy példa a logikai logikára. A matematikai művelet az IGAZ és HAMIS értékeket automatikusan 1 és 0 értékre kényszeríti, és végre van egy tömbünk, amely visszatér a SUM függvényhez:

=SUM((0;0;1;1;0;0;1;1;1;0))

A SUM függvény 5-ös végeredményt ad vissza.

érdekes cikkek...