Kaavan haaste - merkitse järjestyskoodit pois - Palapeli

Sisällysluettelo

Ongelma

Meillä on luettelo aakkosnumeerisista koodeista. Jokainen koodi koostuu yhdestä kirjaimesta (A, B, C jne.), Jota seuraa 3-numeroinen luku. Näiden koodien tulisi näkyä aakkosjärjestyksessä, mutta joskus ne eivät ole järjestyksessä. Haluamme merkitä sarjan ulkopuoliset koodit.

Haaste # 1

Mikä "Tarkista" -sarakkeen kaava sijoittaa "x" sekvenssin ulkopuolisen koodin viereen? Tässä haasteessa tarkistamme vain, että koodin * numeerinen * osa on järjestyksessä, ei sitä, että itse kirjain ei ole järjestyksessä.

Haaste # 2

Kuinka yllä olevaa kaavaa voidaan laajentaa tarkistamaan, onko koodin "alfa" osa (A, B, C jne.) Järjestyksessä? Esimerkiksi meidän tulisi merkitä koodi, joka alkaa "A", jos se näkyy "C" tai "B" alkavan koodin jälkeen.

Lataa alla oleva laskentataulukko ja vastaa haasteeseen!

Huomaa: Työkirjassa on 2 arkkia, yksi haastetta nro 1 varten, yksi haastetta nro 2 varten.

Vihje - Tässä videossa on vinkkejä tämäntyyppisen ongelman ratkaisemiseen.

Oletukset

  1. Kaikissa koodeissa on aina neljä merkkiä: 1 iso kirjain + 3 numeroa.
  2. Koodien lukumäärä kirjainta kohti on satunnainen, mutta numeroarvoissa ei saa olla aukkoja.
  3. Ensimmäinen koodi on merkittävä vain kirjaimella, joka ei ole järjestyksessä, ei kaikkien seuraavien koodien kanssa.
Vastaa (laajenna napsauttamalla)

Tässä on joitain toimivia ratkaisuja. On tärkeää ymmärtää, että on monia, monia tapoja ratkaista yleisiä ongelmia Excelissä. Alla olevat vastaukset ovat vain henkilökohtaisia ​​mieltymyksiäni. Kaikissa alla olevissa kaavoissa funktioiden nimet ovat napsautettavissa, jos haluat lisätietoja.

Haaste # 1

Menin alun perin tämän kaavan kanssa:

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

Huomautus MID palauttaa tekstin. Lisäämällä 1 ja lisäämällä nolla saadaan Excel pakottamaan teksti numeroksi. IF: n sisäisen loogisen testin sisäinen kertolasku käyttää loogista logiikkaa välttääkseen toisen sisäkkäisen IF: n. En ole varma, miksi en käyttänyt OIKEAA, mikä toimisi hyvin myös täällä.

Huomaa myös, että VASEN ei vaadi merkkien määrää ja palauttaa ensimmäisen merkin, jos sitä ei ole annettu.

Joidenkin alla olevien älykkäiden vastausten perusteella voimme optimoida hieman enemmän:

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

Tässä matemaattinen operaatio, joka vähentää MID: n MID: stä, pakottaa tekstiarvot automaattisesti numeroiksi.

Haaste # 2

Tässä ratkaisussa käytin useita sisäkkäisiä IF: itä (rivinvaihdot lisättiin luettavuuden vuoksi):

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

Tein tämän, koska ensimmäinen testi VASEN (B5) = VASEN (B6) määrittää, tarkistammeko numeroita vai kirjaimia. Jos ensimmäinen merkki on sama, tarkistamme numerot kuten yllä. Jos ei, tarkistamme vain ensimmäisen kirjaimen.

Huomaa, että CODE-toiminto palauttaa ensimmäisen merkin ascii-numeron, jos tekstimerkkijonossa on enemmän kuin 1 merkki. Tämä tuntuu hakkeroinnilta, ja se tekee koodista ehkä vähemmän ymmärrettävän, mutta se toimii :)

Jos se loukkaa herkkyyttäsi, käytä VASEMMALLE kuten yllä CODE-koodissa, jotta saat ensimmäisen merkin.

Mielenkiintoisia artikkeleita...