Vzorec aplikace Excel: Pouze specifické znaky pro ověření dat -

Obecný vzorec

=COUNT(MATCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),allowed&"",0))=LEN(A1)

souhrn

Chcete-li pomocí ověření dat povolit pouze seznam konkrétních znaků, můžete použít poměrně komplikovaný vzorec pole založený na funkcích COUNT, MATCH a LEN. V zobrazeném příkladu se použije ověření dat s tímto vzorcem:

=COUNT(MATCH(MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1),allowed&"",0))=LEN(B5)

kde „povoleno“ je pojmenovaný rozsah D5: D11.

Vysvětlení

Při práci zevnitř ven se funkce MID používá ke generování pole z textu zadaného v B5 pomocí tohoto fragmentu:

MID(B5,ROW(INDIRECT("1:"&LEN(B5))),1)

zde podrobně vysvětleno. Výsledkem je pole jako toto:

("A";"A";"A";"-";"1";"1";"1")

který jde do MATCH jako vyhledávací hodnota. Pro vyhledávací pole používáme pojmenovaný rozsah "povoleno", zřetězený na prázdný řetězec (""):

allowed&""

Zřetězení převádí libovolná čísla na řetězce, takže porovnáváme jablka s jablky. Výsledkem je pole jako toto:

("A";"B";"C";"1";"2";"3";"-")

Poslední argument v MATCH, match_type je nastaven na nulu, aby vynutil přesnou shodu. Protože dáme MATCH více hodnot vyhledávání, dostaneme zpět pole s více výsledky:

(1;1;1;7;4;4;4)

Každé číslo v tomto poli představuje shodu. V případě, že pro znak nebude nalezena shoda, bude pole obsahovat chybu # N / A.

Nakonec je použita funkce POČET spočítat čísla v matici výsledků, která je porovnána s počtem všech znaků v buňce vypočítaných pomocí funkce LEN. Když MATCH najde shodu pro všechny znaky, počty jsou stejné, vzorec vrátí TRUE a ověření dat bude úspěšné. Pokud MATCH nenajde shodu s žádným znakem, vrátí místo čísla N / A místo čísla. V takovém případě se počty neshodují a ověření dat selže.

Poznámka: tento vzorec závisí na hrubé síle, aby byla práce hotová. Pokud máte lepší přístup, zanechte prosím komentář níže.

Zajímavé články...