Formulas izaicinājums - atzīmēt ārpus kārtas kodiem Puzle

Satura rādītājs

Problēma

Mums ir burtciparu kodu saraksts. Katrs kods sastāv no viena burta (A, B, C utt.), Kam seko trīsciparu skaitlis. Šiem kodiem vajadzētu parādīties alfabētiskā secībā, bet dažreiz tie ir ārpus secības. Mēs vēlamies atzīmēt ārpus kārtas esošus kodus.

1. izaicinājums

Kāda formula slejā "Pārbaude" novieto "x" blakus kodam, kas nav secīgs? Šajā izaicinājumā mēs tikai pārbaudām, vai koda * ciparu * daļa ir ārpus secības, nevis to, vai pats burts ir ārpus secības.

2. izaicinājums

Kā var paplašināt iepriekšminēto formulu, lai pārbaudītu, vai koda "alfa" daļa (A, B, C utt.) Neatbilst secībai? Piemēram, mums vajadzētu atzīmēt kodu, kas sākas ar "A", ja tas parādās pēc koda, kas sākas ar "C" vai "B".

Lejupielādējiet zemāk esošo darblapu un izpildiet izaicinājumu!

Piezīme: darbgrāmatā ir 2 lapas, viena - izaicinājumam Nr. 1, otra - izaicinājumam Nr. 2.

Padoms - šajā videoklipā ir sniegti daži padomi, kā atrisināt šādu problēmu.

Pieņēmumi

  1. Visos kodos vienmēr ir četras rakstzīmes: 1 lielais burts + 3 cipari.
  2. Kodu skaits vienā burtā ir nejaušs, taču ciparu vērtībās nedrīkst būt atstarpes.
  3. Ir nepieciešams atzīmēt tikai pirmo kodu ar burtu, kas nav secīgs, nevis visus nākamos kodus.
Atbilde (noklikšķiniet, lai izvērstu)

Šeit ir daži darba risinājumi. Ir svarīgi saprast, ka programmā Excel ir daudz, daudz veidu, kā atrisināt bieži sastopamās problēmas. Zemāk minētās atbildes ir tikai mana personīgā izvēle. Ja vēlaties iegūt vairāk informācijas, visās zemāk esošajās formulās funkciju nosaukumi ir noklikšķināmi.

1. izaicinājums

Sākotnēji es izmantoju šo formulu:

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

Piezīme MID atgriež tekstu. Pievienojot 1 un pievienojot nulli, mēs iegūstam Excel, lai tekstu piespiestu skaitlī. Reizināšana loģiskā testa iekšpusē IF izmanto Būla loģiku, lai izvairītos no cita ligzdota IF. Es neesmu pārliecināts, kāpēc es neizmantoju RIGHT, kas arī šeit darbotos labi.

Ņemiet vērā arī to, ka LEFT nav nepieciešams rakstzīmju skaits, un tas atgriezīs pirmo rakstzīmi, ja tas nav norādīts.

Pamatojoties uz dažām gudrām atbildēm zemāk, mēs varam nedaudz vairāk optimizēt:

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

Šeit matemātiskā darbība, atņemot MID no MID, automātiski piesaista teksta vērtības skaitļiem.

2. izaicinājums

Šim risinājumam es izmantoju vairākus ligzdotus IF (lasāmībai pievienoti rindiņu pārtraukumi):

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

Es to izdarīju tāpēc, ka pirmais tests LEFT (B5) = LEFT (B6) nosaka, vai mēs pārbaudām ciparus vai burtus. Ja pirmā rakstzīme ir vienāda, mēs pārbaudām skaitļus, kā norādīts iepriekš. Ja nē, mēs pārbaudām tikai pirmo burtu.

Ņemiet vērā, ka funkcija CODE atgriezīs pirmās rakstzīmes ascii numuru, ja teksta virknē ir vairāk nekā 1 rakstzīme. Tas šķiet kā uzlaušana, un tas padara kodu varbūt mazāk saprotamu, bet tas darbojas :)

Ja tas aizskar jūsu jūtīgumu, izmantojiet LEFT kā iepriekš CODE iekšpusē, lai parādītu tikai pirmo rakstzīmi.

Interesanti raksti...