Izziv formule - zastavica iz zaporednih kod - Uganka

Kazalo

Težava

Imamo seznam alfanumeričnih kod. Vsaka koda je sestavljena iz ene črke (A, B, C itd.), Ki ji sledi 3-mestna številka. Te kode bi morale biti prikazane po abecednem vrstnem redu, včasih pa niso v zaporedju. Označiti želimo zaporedne kode.

Izziv št. 1

Katera formula v stolpcu »Preveri« bo postavila »x« poleg kode, ki ni v zaporedju? V tem izzivu samo preverjamo, ali * številski * del kode ni v zaporedju, in ne, da črka sama ni v zaporedju.

Izziv št

Kako lahko zgornjo formulo razširimo, da preverimo, ali "alfa" del kode (A, B, C itd.) Ni v zaporedju? Na primer, označili bi morali kodo, ki se začne z "A", če se pojavi za kodo, ki se začne s "C" ali "B".

Prenesite spodnji delovni list in sprejmite izziv!

Opomba: v delovnem zvezku sta 2 lista, eden za izziv št. 1, drugi za izziv št. 2.

Namig - Ta videoposnetek vsebuje nekaj nasvetov za rešitev takšne težave.

Predpostavke

  1. Vse kode vedno vsebujejo štiri znake: 1 velika črka + 3 številke.
  2. Število kod na črko je naključno, vendar v številskih vrednostih ne sme biti vrzeli.
  3. Prvo kodo je treba označiti s črko, ki ni zaporedna, ne vseh naslednjih kod.
Odgovor (kliknite za razširitev)

Tu je nekaj delujočih rešitev. Pomembno je razumeti, da v Excelu obstaja veliko, veliko načinov za reševanje pogostih težav. Spodnji odgovori so samo moja osebna želja. V vseh spodnjih formulah lahko imena funkcij kliknete, če želite več informacij.

Izziv št. 1

Prvotno sem šel s to formulo:

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

Opomba MID vrne besedilo. Z dodajanjem 1 in dodajanjem nič dobimo Excel, da besedilo prisili v številko. Množenje znotraj logičnega testa znotraj IF uporablja logično logiko, da se izogne ​​še enemu ugnezdenemu IF. Nisem prepričan, zakaj nisem uporabil RIGHT, kar bi tudi tukaj dobro delovalo.

Upoštevajte tudi, da LEFT ne zahteva števila znakov in bo vrnil prvi znak, če ni naveden.

Na podlagi nekaterih pametnih odzivov spodaj lahko optimiziramo nekoliko več:

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

Tu matematična operacija odštevanja MID od MID samodejno prisili besedilne vrednosti na številke.

Izziv št

Za to rešitev sem uporabil več ugnezdenih IF-jev (dodani so prelomi vrstic zaradi berljivosti):

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

To sem storil, ker prvi test LEFT (B5) = LEFT (B6) določa, ali preverjamo številke ali črke. Če je prvi znak enak, preverjamo številke kot zgoraj. Če ne, preverjamo samo prvo črko.

Funkcija CODE bo vrnila ascii številko prvega znaka, če besedilni niz vsebuje več kot 1 znak. To se zdi kot kramp, zaradi česar je koda morda manj razumljiva, vendar deluje :)

Če to žali vašo občutljivost, uporabite LEVO, kot zgoraj, v KODI, da dostavite samo prvi znak.

Zanimive Članki...