Pengurutan alfanumerik di Excel

11

Di Excel, apakah mungkin untuk mengurutkan alfanumerik dari a-1, a-2, a-3 ... a-123 alih-alih-1, a-10, a-100, a-11?

Menyortir dari terlama ke terbaru atau melalui AZ, pasti tidak akan memberi saya hasil yang saya inginkan. Saya sudah mencoba memformat sel sebagai angka, tetapi tidak membantu.

Aku terjebak.

beccabecca
sumber
Hai @beccabecca, tolong terima jawaban, karena ini tidak hanya bermanfaat bagi orang-orang yang memiliki pertanyaan serupa dengan Anda, tetapi juga memberikan penghargaan kepada mereka yang telah bekerja untuk memberikan solusi bagi Anda. Bersulang!
David Michael Gregg

Jawaban:

4

Hasil

User @ fixer1234 benar, Anda mungkin ingin menggunakan fungsi string. Inilah salah satu cara untuk melakukannya.

Langkah 1

[Diperbarui]

Di kolom "Angka", sorot rentang, lalu bagi teks pada tanda hubung: do ...

Data> Text to Columns> Delimited> Next> Other: ->Finish

Perhatikan Anda membutuhkan tanda hubung ( - ) di Other:kotak teks. Dan pastikan kolom yang berdekatan (di sebelah kanan) kosong sebelum Anda melakukan ini, sehingga Anda tidak menimpa data penting.

Anda juga dapat menggunakan fungsi ini untuk mengekstrak angka dari kolom A:

=RIGHT(A2,LEN(A2)-SEARCH("-",A2))

Langkah 2

Sekarang, apa yang akan kita lakukan pada langkah selanjutnya, seperti yang Anda tahu dari tangkapan layar di atas, adalah menambahkan nol ke awal setiap angka yang memiliki angka lebih sedikit daripada angka terbesar. Ini akan memungkinkan Anda untuk mengurutkan angka-angka ini sesuai keinginan Anda.

Tapi pertama-tama, kita perlu melakukan sedikit pencarian fakta. Jika Anda dapat mengetahui dengan mudah apa angka terbesarnya, maka hitung saja angka dalam angka terbesar itu - ini akan menjadi angka nol yang ingin Anda gunakan dalam fungsi kami berikutnya. Ada cara lain untuk menentukan angka terpanjang, tanpa harus menghitung angka angka terbesar secara manual.

[UPDATE] Anda dapat menggunakan fungsi berikut (meskipun sejauh ini kami tidak tahu mengapa ) untuk menentukan angka terpanjang:

=MAX(INDEX(LEN(C2:C14),,1))

Atau, Anda bisa mengetik rumus berikut ke dalam sel (Anda melihat ini pada gambar di atas sebagai sel yang disorot oranye), tetapi alih-alih hanya menekan ENTERtombol Anda untuk mengatur sel, tekan tombol pintas CTRL-SHIFT-ENTER. Ini akan mengubah sifat fungsi, mengubahnya menjadi formula array , tanpa harus mempermainkan fungsi seperti INDEX().

=MAX(LEN(C2:C14))

(Pastikan rentangnya akurat untuk spreadsheet spesifik yang Anda gunakan.)

Setelah Anda menekan CTRL-SHIFT-ENTER, konten sel akan berubah menjadi ini, tetapi mengetik ini secara manual tidak akan menghasilkan apa-apa:

{=MAX(LEN(C2:C14))}

Namun Anda ingin melakukannya dengan baik. Cukup tentukan berapa banyak digit yang membentuk angka terbesar dalam daftar Anda: "1" tentu saja memiliki 1 digit, "10" memiliki 2 digit, "100" memiliki 3 digit, dan sebagainya.

Langkah 3

Akhirnya, di kolom "Perluas", fungsi ini akan mengubah angka dari kolom "Angka" menjadi teks dengan jumlah nol sebelumnya yang Anda tentukan harus Anda gunakan di Langkah 2.

=TEXT(C2,"000")

Pastikan Anda meletakkan tanda kutip di sekitar nol.

Jika angka terbesar memiliki 8 digit, maka fungsi Anda akan terlihat seperti ini:

=TEXT(C2,"00000000")
David Michael Gregg
sumber
2

Solusi sederhana adalah dengan menggunakan fungsi string untuk menempatkan nilai numerik dalam kolom baru sebagai angka. Kemudian urutkan pada kolom itu. Anda tidak menentukan bagaimana nilainya mungkin berbeda atau bagaimana mereka diatur, tetapi sebuah contoh:

Asumsikan awalan "a-" tidak pernah berubah, entri berada dalam kolom A mulai dari baris 2, dan kolom B tersedia. Di B2, Anda akan meletakkan sesuatu seperti: = value (mid (a2,3, len (a2) -2)) dan kemudian salin rumus yang diperlukan. Untuk mengurutkan, sorot kedua kolom dan urut B.

Jika ada awalan lain, katakanlah b-, c-, dll., Yang sama membagi bagian teks ke kolom lain. Kemudian urutkan pada kolom teks sebagai kolom urut pertama dan kolom angka sebagai yang kedua.

Semua yang Anda sorot akan diurutkan berdasarkan kolom sortir.

Untuk menjelaskan fungsi string, mulailah dengan fungsi pertengahan, yang mengekstrak string karakter dari dalam string karakter. mid (a2,3, len (a2) -2) melihat teks dalam a2, dimulai dengan karakter ketiga (digit pertama dengan asumsi semua awalannya adalah "a-"), dan kemudian mengambil jumlah karakter yang dua lebih sedikit dari angka dalam teks asli (panjang teks asli dikurangi karakter "a-"). Fungsi nilai kemudian mengubah hasil itu menjadi angka, bukan string karakter numerik.

fixer1234
sumber
Maaf, bisakah Anda menjelaskan lebih detail? Apa fungsi string?
beccabecca
Jadi, untuk B3 akan menjadi = nilai (pertengahan (a3,3, len (a3) ​​-2))? Apakah saya benar? Lalu akan begitu seterusnya dan sebagainya? Maaf saya harap saya tidak mengajukan pertanyaan bodoh ...
beccabecca
Kamu mendapatkannya. Setelah Anda membuat rumus dalam B2, Anda bisa menyalinnya, sorot sel B untuk baris sebanyak yang Anda butuhkan dan tempel. Secara otomatis akan mengubah referensi sel untuk mencocokkan baris demi baris.
fixer1234
2

Saya memiliki data berikut:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Lisa            DD38                      90

Aletta          BC36                      85

Ava             AB40                      95

Sunny           BB34                      91

Sofia           CD36                      89

Johnny          CM07                      80

Data awal yang akan disortir menurut String AlphaNumeric

Saya ingin siswa dan tanda diatur sesuai dengan nomor pendaftaran mereka, yang merupakan string alfanumerik. Hasil akhir harus seperti ini:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Ava             AB40                      95

Sunny           BB34                      91

Aletta          BC36                      85

Sofia           CD36                      89

Johnny          CM07                      80

Lisa            DD38                      90

Hasil akhir akan terlihat seperti ini

Bagaimana cara:

Langkah-langkah untuk mengubah string alfanumerik menjadi angka murni

Meskipun snapshot di atas sudah jelas, namun langkah-langkahnya adalah sebagai berikut:

  1. Ekstrak bagian alfabet dalam kolom menggunakan =LEFT(B4, 2)rumus, di mana '2' menunjukkan jumlah huruf dalam string dan string saya mulai dari B4.

  2. Tetapkan nomor untuk bagian alfabet ini menggunakan =COLUMN(INDIRECT(E4&1))

  3. Ekstrak bagian numerik dari nomor pendaftaran menggunakan =RIGHT(B4,2)rumus. Di sini '2' adalah no. angka dalam string.

  4. Menggabungkan dua bagian dalam 2 dan 3

  5. Konversikan ke angka 'murni' menggunakan =VALUE(H4)

  6. Salin kolom terakhir ke tabel asli dan gunakan opsi Tempel sebagai 'Nilai'

    Data awal ditambahkan dengan string alfanumerik yang dikonversi menjadi angka

  7. Sekarang, urutkan berdasarkan kolom terakhir dan pilih 'Perluas pilihan'

    Sortasi 1

    Sortasi 2

  8. Selesai !!!

    Hasil akhir

Penting: Pro-Tip -> Gabungkan langkah-langkah dari 1 hingga 5 menggunakan =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))

BK_
sumber
Selain itu: seperti dalam contoh ini semua nomor registrasi memiliki panjang yang sama, dengan baik menggunakan nol di depan untuk bagian numerik : bukankah penyortir biasa akan bekerja di luar kotak?
Arjan