Daftar Isi
Tutorial ini menunjukkan cara mengekstrak angka dari berbagai string teks di Excel dengan menggunakan rumus dan alat Ekstrak.
Dalam hal mengekstrak bagian dari string teks dengan panjang tertentu, Excel menyediakan tiga fungsi Substring (Kiri, Kanan, dan Tengah) untuk menangani tugas dengan cepat. Dalam hal mengekstrak angka dari string alfanumerik, Microsoft Excel tidak menyediakan... tidak ada.
Untuk mendapatkan angka dari string di Excel, dibutuhkan sedikit kecerdikan, sedikit kesabaran, dan sekumpulan fungsi berbeda yang bersarang satu sama lain. Atau, Anda dapat menjalankan alat Ekstrak dan menyelesaikan pekerjaan dengan satu klik mouse. Di bawah ini Anda akan menemukan detail lengkap tentang kedua metode tersebut.
Cara mengekstrak nomor dari akhir string teks
Bila Anda memiliki kolom string alfanumerik di mana angka muncul setelah teks, Anda dapat menggunakan rumus berikut untuk mendapatkannya.
KANAN( sel , LEN( sel ) - MAX(IF(ISNUMBER(MID( sel , ROW(INDIRECT("1:"&LEN( sel ))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( sel ))), 0)))Kita akan membahas logika rumus ini nanti. Untuk sekarang, cukup ganti sel dengan referensi ke sel yang berisi string asli (A2 dalam kasus kami), dan masukkan rumus di sel kosong mana pun di baris yang sama, katakanlah di B2:
=RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))))
Rumus ini mendapatkan angka hanya dari akhir. Jika string juga memiliki angka di awal atau tengah, angka-angka tersebut diabaikan:
Ekstraksi dilakukan dengan fungsi RIGHT yang termasuk dalam kategori fungsi Teks. Keluaran dari fungsi ini selalu teks Dalam kasus kami, hasilnya adalah substring numerik yang dalam istilah Excel juga berupa teks, bukan angka.
Jika Anda memerlukan hasilnya menjadi nomor (yang dapat Anda gunakan dalam perhitungan lebih lanjut), kemudian bungkus rumus ke dalam fungsi VALUE atau lakukan operasi aritmatika yang tidak mengubah hasilnya, katakanlah, kalikan dengan 1 atau tambahkan 0. Untuk menangkap kesalahan dalam string yang tidak berisi satu angka, gunakan fungsi IFERROR. Misalnya:
=IFERROR(VALUE(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))), "")
atau
=IFERROR(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2)))), 0)) +0, "")
Catatan. Di Dynamic Array Excel (Office 365 dan 2021), Anda memasukkan rumus dengan cara biasa dengan tombol Enter. Di Excel 2019 dan sebelumnya, ini hanya berfungsi sebagai rumus array, jadi ingatlah untuk menekan Ctrl + Shift + Enter untuk menyelesaikannya.
Bagaimana formula ini bekerja:
Untuk mengekstrak angka dari string alfanumerik, hal pertama yang perlu Anda ketahui adalah di mana harus memulai ekstraksi. Posisi karakter non-numerik terakhir dalam sebuah string ditentukan dengan bantuan rumus rumit ini:
MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))
Untuk memahami logikanya, mari kita selidiki dari dalam:
Kombinasi ROW(INDIRECT("1:"&LEN(A2)))) menciptakan urutan angka yang sesuai dengan total karakter dalam string sumber (A2), dan kami menyajikan angka-angka berurutan ini ke MID sebagai angka awal:
MID(A2, {1;2;3;4;5;6;7;8}, 1)
Fungsi MID menarik setiap karakter individu dari A2 dan mengembalikannya sebagai array:
{"0";"5";"-";"E";"C";"-";"0";"1"}
Karena MID adalah fungsi teks, outputnya selalu berupa teks (seperti yang bisa Anda perhatikan, semua karakter diapit oleh tanda petik). Untuk mengubah angka numerik menjadi angka, kita kalikan array dengan 1 (negasi ganda --MID() akan memiliki efek yang sama). Hasil dari operasi ini adalah array angka dan kesalahan #VALUE! yang mewakili karakter non-numerik:
ISNUMBER({0;5;#NILAI!;#NILAI!;#NILAI!;#NILAI!;0;1})
Fungsi ISNUMBER mengevaluasi setiap elemen larik dan memberikan putusannya dalam bentuk nilai Boolean - TRUE untuk angka, FALSE untuk hal lain:
{BENAR;BENAR;SALAH;SALAH;SALAH;SALAH;SALAH;BENAR;BENAR}
Larik ini masuk ke uji logika fungsi IF, di mana setiap elemen larik dibandingkan dengan FALSE:
IF({TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)
Untuk setiap FALSE (nilai non-numerik), fungsi ROW(INDIRECT()) lainnya mengembalikan posisi relatifnya dalam string. Untuk setiap TRUE (nilai numerik), angka nol dikembalikan. Larik yang dihasilkan terlihat sebagai berikut:
{0;0;3;4;5;6;0;0}
Fungsi MAX menemukan angka tertinggi dalam larik di atas, yang merupakan posisi nilai non-numerik terakhir dalam string (6 dalam kasus kami). Cukup, kurangi posisi itu dari total panjang string yang dikembalikan oleh LEN, dan berikan hasilnya ke KANAN untuk memberi tahu berapa banyak karakter yang akan diekstrak dari sisi kanan string:
KANAN(A2, LEN(A2) - 6)
Selesai!
Cara mengekstrak nomor dari awal string teks
Jika Anda bekerja dengan record di mana teks muncul setelah angka, Anda dapat mengekstrak angka dari awal string dengan menggunakan rumus umum ini:
KIRI( sel , MATCH(FALSE, ISNUMBER(MID( sel , ROW(INDIRECT("1:"&LEN( sel )+1)), 1) *1), 0) -1)Dengan string asli di A2, gunakan rumus berikut untuk mendapatkan angka:
=LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)
Tidak peduli berapa digit yang ada di tengah atau akhir, hanya angka awal yang diekstraksi:
Catatan. Di Excel 365 dan Excel 2021, karena dukungan untuk array dinamis, rumus biasa berfungsi dengan baik. Di Excel 2019 dan sebelumnya, Anda harus menekan Ctrl + Shift + Enter untuk secara eksplisit membuatnya menjadi rumus larik .
Bagaimana formula ini bekerja:
Di sini, kita kembali menggunakan kombinasi fungsi ROW, INDIRECT dan LEN untuk membuat urutan angka yang sama dengan total karakter dalam string sumber ditambah 1 (peran karakter tambahan itu akan menjadi jelas nanti).
BARIS(INDIRECT("1:"&LEN(A2)+1))
MID dan ISNUMBER melakukan pekerjaan yang sama seperti pada contoh sebelumnya - MID menarik karakter individu dan ISNUMBER mengubahnya menjadi nilai logika. Larik yang dihasilkan dari TRUE dan FALSE masuk ke fungsi MATCH sebagai larik pencarian:
MATCH(FALSE, {TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE}, 0)
MATCH menghitung posisi relatif dari FALSE pertama, memberi kita posisi karakter non-numerik pertama dalam string (3 di A2). Untuk mengekstrak angka-angka sebelumnya, kita kurangi 1 dari posisi karakter teks pertama dan menyajikan selisihnya ke num_chars argumen dari fungsi LEFT:
KIRI (A2, 3-1)
Sekarang, kembali ke karakter "ekstra" dalam urutan yang dihasilkan oleh ROW(INDIRECT()+1)). Seperti yang sudah Anda ketahui, urutan ini menyediakan titik awal untuk fungsi MID. Tanpa +1, MID akan mengekstrak persis sebanyak karakter yang ada dalam string asli. Jika string hanya berisi angka, ISNUMBER hanya akan mengembalikan TRUE sementara MATCH membutuhkan setidaknya satu FALSE. Untuk memastikan itu, kami menambahkan satulebih banyak karakter ke panjang total string, yang akan dikonversi oleh fungsi MID menjadi string kosong. Misalnya, di B7, MID mengembalikan larik ini:
{"1"; "2"; "3"; "4";""}
Catatan. Seperti halnya dengan fungsi RIGHT, LEFT juga mengembalikan a substring numerik Untuk mendapatkan hasil sebagai angka daripada string numerik, sarangkan rumus dalam fungsi VALUE atau kalikan hasilnya dengan 1 seperti yang ditunjukkan pada contoh pertama.
Cara mendapatkan angka dari posisi mana pun dalam sebuah string
Jika tugas Anda menyiratkan mengekstrak angka dari mana saja dalam string, Anda dapat menggunakan rumus membingungkan berikut yang dipublikasikan di forum MrExcel:
=SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2)))), 1)) * ROW(INDIRECT("1:"&LEN(A2)))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A2)))/10)
Di mana A2 adalah string teks asli.
Untuk menguraikan rumus ini akan memerlukan artikel terpisah, jadi Anda cukup menyalinnya ke lembar kerja Anda untuk memastikannya benar-benar berfungsi :)
Namun, setelah memeriksa hasilnya, Anda mungkin melihat satu kelemahan yang tidak signifikan - jika string sumber tidak berisi angka, rumus mengembalikan nol, seperti pada baris 6 pada tangkapan layar di atas. Untuk memperbaikinya, Anda dapat membungkus rumus dalam pernyataan IF, tes logis yang memeriksa apakah string sumber berisi angka apa pun. Jika ya, rumus mengekstrak angka, jika tidak mengembalikan angka kosongstring:
=IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("$1:$"&LEN(A2))),1))* ROW(INDIRECT("$1:$"&LEN(A2))),0), ROW(INDIRECT("$1:$"&LEN(A2))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A2)))/10),"")
Seperti yang ditunjukkan pada gambar di bawah ini, formula yang sudah diperbaiki bekerja dengan indah (pujian untuk Alex, guru Excel kami, untuk perbaikan ini):
Tidak seperti pada semua contoh sebelumnya, hasil dari rumus ini adalah nomor Untuk memastikan hal ini, perhatikan saja nilai rata kanan dalam kolom B dan angka nol di depan yang terpotong.
Di Excel 365 - Excel 2019, ada solusi yang jauh lebih sederhana dengan bantuan fungsi TEXTJOIN. Silakan lihat Cara menghapus teks dan menyimpan angka.
Ekstrak nomor dari string teks dengan Ultimate Suite
Seperti yang baru saja Anda lihat, tidak ada rumus Excel yang sepele untuk menarik angka dari string teks. Jika Anda mengalami kesulitan dalam memahami rumus atau mengubahnya untuk kumpulan data Anda, Anda mungkin menyukai cara sederhana ini untuk mendapatkan angka dari string di Excel.
Dengan Suite Ultimate kami ditambahkan ke pita Excel Anda, ini adalah bagaimana Anda dapat dengan cepat mengambil nomor dari string alfanumerik apa pun:
- Pergi ke Data Ablebits tab> Teks kelompok, dan klik Ekstrak :
- Pilih semua sel dengan string sumber.
- Pada panel alat Ekstrak, pilih Ekstrak angka tombol radio.
- Tergantung pada apakah Anda ingin hasilnya berupa formula atau nilai, pilih Masukkan sebagai rumus atau biarkan tidak dipilih (default).
Saran saya adalah pilih kotak ini jika Anda ingin angka yang diekstrak diperbarui secara otomatis segera setelah ada perubahan yang dilakukan pada string sumber. Jika Anda ingin hasilnya tidak tergantung pada string asli (misalnya, jika Anda berencana untuk menghapus data sumber di kemudian hari), maka jangan pilih kotak ini.
- Klik Masukkan Hasil tombol. Selesai!
Seperti pada contoh sebelumnya, hasil ekstraksi adalah angka , yang berarti Anda bebas menghitung, menjumlahkan, rata-rata, atau melakukan kalkulasi lain dengannya.
Dalam contoh ini, kita memilih untuk menyisipkan hasilnya sebagai nilai dan add-in melakukan persis apa yang diminta:
Jika Masukkan sebagai rumus dipilih, Anda akan mengamati formula Penasaran ingin tahu yang mana? Langsung saja unduh uji coba Ultimate Suite dan buktikan sendiri :)
Unduhan yang tersedia
Nomor Ekstrak Excel - contoh buku kerja (file .xlsx)
Ultimate Suite - versi percobaan (file .exe)