Výzva pre vzorec - nahlásenie mimo sekvenčných kódov Hádanka

Obsah

Problém

Máme zoznam alfanumerických kódov. Každý kód pozostáva z jedného písmena (A, B, C atď.), Za ktorým nasleduje 3-miestne číslo. Tieto kódy by mali byť uvedené v abecednom poradí, niekedy však nie sú v poradí. Chceme označiť kódy mimo postupnosti.

Výzva č

Aký vzorec v stĺpci „Skontrolovať“ umiestni „x“ vedľa kódu, ktorý je mimo poradia? V tejto výzve iba kontrolujeme, či je * číselná * časť kódu mimo poradia, nie či je samotné písmeno mimo poradia.

Výzva č

Ako je možné rozšíriť vyššie uvedený vzorec a skontrolovať, či je časť kódu „alfa“ (A, B, C atď.) Mimo poradia? Mali by sme napríklad označiť kód, ktorý začína na „A“, ak sa objaví za kódom, ktorý začína na „C“ alebo „B“.

Stiahnite si pracovný list uvedený nižšie a chopte sa výzvy!

Poznámka: V zošite sú 2 listy, jeden pre výzvu č. 1, druhý pre výzvu č. 2.

Rada - Toto video zobrazuje niekoľko tipov, ako vyriešiť problém ako je tento.

Domnienky

  1. Všetky kódy vždy obsahujú štyri znaky: 1 veľké písmeno + 3 čísla.
  2. Počet kódov na písmeno je náhodný, v číselných hodnotách by však nemali byť medzery.
  3. Je len potrebné označiť prvý kód písmenom za sebou, nie všetky nasledujúce kódy.
Odpoveď (kliknutím rozbalíte)

Tu je niekoľko pracovných riešení. Je dôležité si uvedomiť, že existuje veľa, veľa spôsobov, ako vyriešiť bežné problémy v programe Excel. Odpovede nižšie sú len mojou osobnou preferenciou. Vo všetkých nižšie uvedených vzorcoch je možné kliknúť na názvy funkcií, ak potrebujete ďalšie informácie.

Výzva č

Pôvodne som šiel s týmto vzorcom:

=IF((LEFT(B5)=LEFT(B6))*(MID(B5,2,3)+1MID(B6,2,3)+0),"x","")

Poznámka MID vráti text. Pridaním 1 a nuly dostaneme program Excel na vynútenie textu do čísla. Násobenie vo vnútri logického testu vo vnútri IF používa logickú logiku, aby sa zabránilo ďalšiemu vnorenému IF. Nie som si istý, prečo som nepoužil PRAVÉ, ktoré by tu tiež fungovalo dobre.

Upozorňujeme, že LEFT nevyžaduje počet znakov a vráti prvý znak, pokiaľ nie je uvedený.

Na základe niektorých chytrých odpovedí uvedených nižšie môžeme optimalizovať trochu viac:

=IF((LEFT(B5)=LEFT(B6))*(MID(B6,2,3)-MID(B5,2,3)1),"x","")

Tu matematická operácia odpočítania MID od MID automaticky vynúti textové hodnoty na čísla.

Výzva č

Pre toto riešenie som použil niekoľko vnorených IF (konce riadkov boli pridané kvôli čitateľnosti):

=IF(LEFT(B5)=LEFT(B6), IF((MID(B5,2,3)+1MID(B6,2,3)+0),"x",""), IF(CODE(B5)+1CODE(B6),"x",""))

Urobil som to preto, lebo prvý test LEFT (B5) = LEFT (B6) určuje, či kontrolujeme čísla alebo písmená. Ak je prvý znak rovnaký, kontrolujeme čísla uvedené vyššie. Ak nie, kontrolujeme iba prvé písmeno.

Funkcia CODE vráti číslo ascii prvého znaku, ak textový reťazec obsahuje viac ako 1 znak. Zdá sa to ako hack a kód je možno menej zrozumiteľný, ale funguje to :)

Ak to uráža vaše cítenie, použite LEVÉ vyššie uvedené kódy CODE a zadajte prvý znak.

Zaujímavé články...