Cabaran formula - bendera keluar dari kod urutan - Teka-teki

Isi kandungan

Masalah

Kami mempunyai senarai kod alfanumerik. Setiap kod terdiri daripada satu huruf (A, B, C, dll.) Diikuti dengan angka 3 digit. Kod-kod ini harus dipaparkan dalam urutan abjad, tetapi kadangkala tidak mengikut urutan. Kami mahu menandakan kod yang tidak mengikut urutan.

Cabaran # 1

Apakah formula di lajur "Periksa" yang akan meletakkan "x" di sebelah kod yang tidak mengikut urutan? Dalam cabaran ini, kami hanya memeriksa bahawa bahagian * numerik * kod tidak berurutan, bukan huruf itu sendiri tidak berurutan.

Cabaran # 2

Bagaimanakah formula di atas dapat diperluas untuk memeriksa apakah bahagian kod "alpha" (A, B, C, dll.) Tidak mengikut urutan? Sebagai contoh, kita harus menandakan kod yang dimulai dengan "A" jika muncul setelah kod yang dimulai dengan "C" atau "B".

Muat turun lembaran kerja di bawah dan ikuti cabarannya!

Catatan: terdapat 2 helaian dalam buku kerja, satu untuk Cabaran # 1, satu untuk Cabaran # 2.

Petunjuk - Video ini menunjukkan beberapa petua untuk menyelesaikan masalah seperti ini.

Andaian

  1. Semua kod selalu mengandungi empat aksara: 1 huruf besar + 3 nombor.
  2. Jumlah kod per huruf adalah rawak, tetapi tidak boleh ada jurang dalam nilai angka.
  3. Hanya perlu menandakan kod pertama dengan huruf yang tidak mengikut urutan, bukan semua kod berikutnya.
Jawapan (klik untuk mengembangkan)

Berikut adalah beberapa kaedah penyelesaian. Penting untuk memahami bahawa terdapat banyak, banyak, cara untuk menyelesaikan masalah biasa di Excel. Jawapan di bawah hanyalah pilihan peribadi saya. Dalam semua formula di bawah, nama fungsi dapat diklik jika anda mahukan lebih banyak maklumat.

Cabaran # 1

Saya pada mulanya menggunakan formula ini:

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

Perhatikan MID mengembalikan teks. Dengan menambahkan 1 dan menambah sifar, kita mendapatkan Excel untuk memaksa teks menjadi nombor. Pendaraban di dalam ujian logik di dalam IF menggunakan logik boolean untuk mengelakkan IF bersarang lain. Saya tidak pasti mengapa saya tidak menggunakan KANAN, yang juga berfungsi dengan baik di sini.

Perhatikan juga KIRI tidak memerlukan bilangan aksara dan akan mengembalikan watak pertama jika tidak disediakan.

Berdasarkan beberapa jawapan bijak di bawah, kami dapat mengoptimumkan sedikit lagi:

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

Di sini, operasi matematik menolak MID dari MID secara automatik menyatukan nilai teks menjadi nombor.

Cabaran # 2

Untuk penyelesaian ini, saya menggunakan beberapa IF bersarang (jeda baris ditambahkan untuk keterbacaan):

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

Saya melakukan ini kerana ujian pertama LEFT (B5) = LEFT (B6) menentukan sama ada kita memeriksa nombor atau huruf. Sekiranya watak pertama sama, kami memeriksa nombor seperti di atas. Sekiranya tidak, kami hanya memeriksa huruf pertama.

Perhatikan fungsi CODE akan mengembalikan nombor ascii watak pertama jika rentetan teks mengandungi lebih daripada 1 watak. Ini terasa seperti peretasan, dan mungkin membuat kod kurang difahami, tetapi berfungsi :)

Sekiranya itu menyinggung perasaan anda, gunakan KIRI seperti di atas dalam KOD untuk menyampaikan watak pertama.

Artikel menarik...