Képletkihívás - jelölés a sorrend kódjain kívül Kirakós játék

Tartalomjegyzék

A probléma

Van egy alfanumerikus kódok listája. Minden kód egyetlen betűből (A, B, C stb.) Áll, amelyet egy háromjegyű szám követ. Ezeknek a kódoknak ábécé sorrendben kell megjelenniük, de néha sorrenden kívül vannak. Sorozaton kívüli kódokat szeretnénk megjelölni.

1. kihívás

A "Ellenőrzés" oszlop melyik képlete fog "x" -et elhelyezni a sorozaton kívüli kód mellett? Ebben a kihívásban csak azt ellenőrizzük, hogy a kód * numerikus * része sorrendben van-e, nem azt, hogy maga a betű sorrenden kívül van-e.

2. kihívás

Hogyan lehet kibővíteni a fenti képletet annak ellenőrzésére, hogy a kód "alfa" része (A, B, C stb.) Nincs-e sorrendben? Például meg kell jelölnünk egy „A” betűvel kezdődő kódot, ha az egy „C” vagy „B” betűvel kezdődő kód után jelenik meg.

Töltse le az alábbi munkalapot, és vállalja a kihívást!

Megjegyzés: 2 lap van a munkafüzetben, egy az 1. kihíváshoz, egy a 2. kihíváshoz.

Tipp - Ez a videó néhány tippet tartalmaz az ilyen problémák megoldásához.

Feltételezések

  1. Minden kód mindig négy karaktert tartalmaz: 1 nagybetű + 3 szám.
  2. Betűnként a kódok száma véletlenszerű, de a numerikus értékekben nem szabad hézagokat feltüntetni.
  3. Csak az első kódot kell sorozaton kívüli betűvel megjelölni, nem az összes következő kódot.
Válasz (kattintson a kibontáshoz)

Íme néhány működő megoldás. Fontos megérteni, hogy az Excel problémáinak megoldására sok-sok módszer létezik. Az alábbi válaszok csak személyes preferenciáim. Az összes alábbi képletben a függvények nevére kattintani lehet, ha további információt szeretne.

1. kihívás

Eredetileg ezzel a képlettel jártam:

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

Megjegyzés: A MID visszaadja a szöveget. 1 és nulla hozzáadásával megkapjuk az Excel-t, hogy a szöveget számgá kényszerítse. Az IF-n belüli logikai teszten belüli szorzás logikai logikát használ az újabb beágyazott IF elkerülésére. Nem tudom, miért nem használtam a RIGHT-ot, ami itt is jól működne.

Vegye figyelembe azt is, hogy a BALRA nincs szükség a karakterek számára, és az első karaktert adja vissza, ha nincs megadva.

Az alábbi okos válaszok alapján még egy kicsit optimalizálhatunk:

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

Itt a MID MID-ből történő kivonásának matematikai művelete automatikusan a számértékekre kényszeríti a szöveges értékeket.

2. kihívás

Ehhez a megoldáshoz több beágyazott IF-t használtam (az olvashatóság érdekében sortöréseket adtunk hozzá):

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

Ezt azért tettem, mert az első teszt BAL (B5) = BAL (B6) határozza meg, hogy számokat vagy betűket ellenőrizünk-e. Ha az első karakter megegyezik, akkor a fentiek szerint ellenőrizzük a számokat. Ha nem, akkor csak az első betűt ellenőrizzük.

Vegye figyelembe, hogy a CODE függvény visszaadja az első karakter ascii számát, ha a szöveges karakterlánc 1-nél több karaktert tartalmaz. Ez hacknek tűnik, és talán kevésbé érthetővé teszi a kódot, de működik :)

Ha ez sérti az érzékenységedet, a CODE belsejében a fentiek szerint baloldalt használd az első karakter megadásához.

érdekes cikkek...