Tantangan formula - bendera dari kode urutan - Membingungkan

Daftar Isi

Masalah

Kami memiliki daftar kode alfanumerik. Setiap kode terdiri dari satu huruf (A, B, C, dll.) Diikuti dengan angka 3 digit. Kode-kode ini harus muncul dalam urutan abjad, tetapi terkadang keluar dari urutannya. Kami ingin menandai kode di luar urutan.

Tantangan # 1

Rumus apa di kolom "Periksa" yang menempatkan "x" di samping kode yang tidak berurutan? Dalam tantangan ini, kami hanya memeriksa bahwa bagian * numerik * dari kode tersebut keluar dari urutan, bukan bahwa huruf itu sendiri di luar urutan.

Tantangan # 2

Bagaimana rumus di atas dapat diperpanjang untuk memeriksa apakah bagian "alpha" dari kode (A, B, C, dll.) Keluar dari urutan? Misalnya, kita harus menandai kode yang dimulai dengan "A" jika muncul setelah kode yang diawali dengan "C" atau "B".

Unduh lembar kerja di bawah ini dan terima tantangannya!

Catatan: ada 2 lembar di buku kerja, satu untuk Tantangan # 1, satu untuk Tantangan # 2.

Petunjuk - Video ini menunjukkan beberapa tip tentang cara mengatasi masalah seperti ini.

Asumsi

  1. Semua kode selalu mengandung empat karakter: 1 huruf besar + 3 angka.
  2. Jumlah kode per huruf acak, tetapi tidak boleh ada celah dalam nilai numerik.
  3. Anda hanya perlu menandai kode pertama dengan huruf di luar urutan, tidak semua kode berikutnya.
Jawab (klik untuk memperluas)

Berikut beberapa solusi yang berfungsi. Penting untuk dipahami bahwa ada banyak, banyak, cara untuk memecahkan masalah umum di Excel. Jawaban di bawah ini hanyalah preferensi pribadi saya. Dalam semua rumus di bawah ini, nama fungsi dapat diklik jika Anda menginginkan informasi selengkapnya.

Tantangan # 1

Saya awalnya menggunakan rumus ini:

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

Catatan MID mengembalikan teks. Dengan menambahkan 1 dan menambahkan nol, kita mendapatkan Excel untuk memaksa teks menjadi angka. Perkalian di dalam tes logika di dalam IF menggunakan logika boolean untuk menghindari IF bertumpuk lainnya. Saya tidak yakin mengapa saya tidak menggunakan RIGHT, yang juga akan berfungsi dengan baik di sini.

Juga perhatikan LEFT tidak memerlukan jumlah karakter dan akan mengembalikan karakter pertama jika tidak disediakan.

Berdasarkan beberapa tanggapan cerdas di bawah ini, kami dapat lebih mengoptimalkan:

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

Di sini, operasi matematika untuk mengurangi MID dari MID secara otomatis memaksa nilai teks menjadi angka.

Tantangan # 2

Untuk solusi ini, saya menggunakan beberapa IF bersarang (jeda baris ditambahkan agar terbaca):

=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 karena tes pertama LEFT (B5) = LEFT (B6) menentukan apakah kita memeriksa angka atau huruf. Jika karakter pertama sama, kami memeriksa angka seperti di atas. Jika tidak, kami hanya memeriksa huruf pertama.

Perhatikan bahwa fungsi CODE akan mengembalikan bilangan ascii dari karakter pertama jika string teks berisi lebih dari 1 karakter. Ini terasa seperti peretasan, dan mungkin membuat kodenya kurang dapat dipahami, tetapi berhasil :)

Jika itu menyinggung perasaan Anda, gunakan KIRI seperti di atas di dalam CODE untuk mengirimkan karakter pertama saja.

Artikel yang menarik...