Cara menghapus teks atau angka dari sel Excel

  • Bagikan Ini
Michael Brown

Tutorial ini akan mengajarkan Anda cara memisahkan teks dari angka di Excel dengan menggunakan rumus asli dan fungsi kustom. Anda juga akan belajar cara membagi teks dan angka menjadi dua kolom terpisah.

Bayangkan ini: Anda menerima data mentah untuk dianalisis dan menemukan bahwa angka-angka bercampur dengan teks dalam satu kolom. Dalam kebanyakan situasi, tentu akan lebih nyaman untuk memilikinya dalam kolom terpisah untuk pemeriksaan lebih dekat.

Jika Anda bekerja dengan data yang homogen, Anda mungkin bisa menggunakan fungsi LEFT, RIGHT, dan MID untuk mengekstrak jumlah karakter yang sama dari posisi yang sama. Tapi itu adalah skenario ideal untuk tes laboratorium. Dalam kehidupan nyata, Anda kemungkinan besar berurusan dengan data yang berbeda di mana angka datang sebelum teks, setelah teks atau di antara teks. Contoh-contoh di bawah ini memberikan solusi yang tepat untuk inikasus.

    Cara menghapus teks dan menyimpan angka di sel Excel

    Solusi ini berfungsi di Excel 365, Excel 2021, dan Excel 2019

    Microsoft Excel 2019 memperkenalkan beberapa fungsi baru yang tidak tersedia di versi sebelumnya, dan kita akan menggunakan salah satu fungsi tersebut, yaitu TEXTJOIN, untuk menghapus karakter teks dari sel yang berisi angka.

    Rumus generiknya adalah:

    TEXTJOIN("", TRUE, IFERROR(MID( sel , ROW(INDIRECT("1:"&LEN( sel ))), 1) *1, ""))

    Di Excel 365 dan 2021, yang satu ini juga akan berfungsi:

    TEXTJOIN("", TRUE, IFERROR(MID( sel , SEQUENCE(LEN( sel )), 1) *1, ""))

    Pada pandangan pertama, rumus-rumus ini mungkin terlihat agak mengintimidasi, tetapi memang berhasil :)

    Misalnya, untuk menghapus teks dari angka di A2, masukkan salah satu rumus di bawah ini di B2, lalu salin ke sel sebanyak yang diperlukan.

    Di Excel 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1, ""))

    Di Excel 2019, itu harus dimasukkan sebagai rumus array dengan Ctrl + Shift + Enter . Dalam array dinamis Excel, ini berfungsi sebagai rumus normal yang dilengkapi dengan tombol Enter.

    Di Excel 365 dan 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    Hasilnya, semua karakter teks dihapus dari sel dan angka disimpan:

    Bagaimana formula ini bekerja:

    Untuk lebih memahami logikanya, mari kita mulai menyelidiki rumus dari dalam:

    Anda menggunakan ROW(INDIRECT("1:"&LEN(string)))) atau SEQUENCE(LEN(string)) untuk membuat urutan angka yang sesuai dengan jumlah total karakter dalam string sumber, lalu memasukkan angka-angka berurutan tersebut ke fungsi MID sebagai angka awal. Di B2, bagian rumus ini terlihat sebagai berikut:

    MID(A2, {1;2;3;4;4;5;5;6;7;7;8;9;10;11;12;13;14;15}, 1)

    Fungsi MID mengekstrak setiap karakter dari A2 dimulai dengan yang pertama dan mengembalikannya sebagai array:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Larik ini dikalikan dengan 1. Nilai numerik bertahan tanpa perubahan, sementara mengalikan karakter non-numerik menghasilkan kesalahan #VALUE!

    {2;1;0;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;}

    Fungsi IFERROR menangani error ini dan menggantikannya dengan string kosong:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    Larik akhir ini disajikan ke fungsi TEXTJOIN, yang menggabungkan nilai yang tidak kosong dalam larik ( ignore_empty argumen diatur ke TRUE) menggunakan string kosong ("") untuk pembatas:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Tip. Untuk Excel 2016 - 2007, solusi juga ada, tetapi rumusnya jauh lebih kompleks. Anda dapat menemukannya di tutorial ini: Cara mengekstrak angka di Excel.

    Fungsi kustom untuk menghapus teks dari angka

    Solusi ini berfungsi untuk semua versi Excel

    Jika Anda menggunakan versi Excel yang lebih lama atau menemukan rumus di atas terlalu sulit untuk diingat, tidak ada yang menghalangi Anda untuk membuat fungsi Anda sendiri dengan sintaks yang lebih sederhana dan nama yang ramah pengguna seperti HapusTeks Fungsi yang ditentukan pengguna (UDF) dapat ditulis dalam dua cara:

    Kode VBA 1:

    Di sini, kita melihat setiap karakter dalam string sumber satu per satu dan memeriksa apakah itu numerik atau bukan. Jika angka, karakter ditambahkan ke string yang dihasilkan.

    Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Kode VBA 2:

    Kode ini membuat objek untuk memproses ekspresi reguler. Dengan menggunakan RegExp, kita menghapus semua karakter selain angka 0-9 dari string sumber.

    Function RemoveText(str As String ) As String With CreateObject ("VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    Pada lembar kerja kecil, kedua kode akan bekerja sama baiknya. Pada lembar kerja besar di mana fungsi dipanggil ratusan atau ribuan kali, kode 2 yang menggunakan VBScript.RegExp akan bekerja lebih cepat.

    Langkah-langkah mendetail untuk menyisipkan kode di buku kerja Anda dapat ditemukan di sini: Cara memasukkan kode VBA di Excel.

    Pendekatan mana pun yang Anda pilih, dari perspektif pengguna akhir, fungsi untuk menghapus teks dan meninggalkan angka sesederhana ini:

    HapusTeks(string)

    Misalnya, untuk menghapus karakter non-numerik dari sel A2, rumus di B2 adalah:

    =HapusTeks(A2)

    Salin saja ke bawah kolom, dan Anda akan mendapatkan hasil ini:

    Catatan. Baik rumus asli maupun output fungsi kustom a string numerik Untuk mengubahnya menjadi angka, kalikan hasilnya dengan 1, atau tambahkan nol, atau bungkus rumus dalam fungsi VALUE. Sebagai contoh:

    =HapusTeks(A2) + 0

    =VALUE(HapusTeks(A2))

    Cara menghapus angka dari string teks di Excel

    Solusi ini berfungsi di Excel 365, Excel 2021, dan Excel 2019

    Rumus untuk menghapus angka dari string alfanumerik cukup mirip dengan yang dibahas dalam contoh sebelumnya.

    Untuk Excel 365 - 2019:

    TEXTJOIN("", TRUE, IF(ISERR(MID( sel , ROW(INDIRECT("1:"&LEN( sel ) )), 1) *1), MID( sel , ROW(INDIRECT("1:"&LEN( sel ))), 1), ""))

    Di Excel 2019, ingatlah untuk menjadikannya sebagai rumus larik dengan menekan tombol Ctrl + Shift + Enter secara bersamaan.

    Untuk Excel 365 dan 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( sel , SEQUENCE(LEN( sel 1) *1), MID( sel , SEQUENCE(LEN( sel )), 1), ""))

    Misalnya, untuk menghapus angka dari string di A2, rumusnya adalah:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT("1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    Atau

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))

    Hasilnya, semua angka dihapus dari sel dan karakter teks disimpan:

    Seperti yang ditunjukkan pada tangkapan layar di atas, rumus ini menghapus karakter numerik dari posisi mana pun dalam string: di awal, di akhir, dan di tengah. Namun, ada peringatan: jika string dimulai dengan angka yang diikuti oleh spasi , ruang itu dipertahankan, yang menghasilkan masalah spasi terdepan (seperti di B2).

    Untuk menyingkirkan ekstra spasi sebelum teks , bungkus rumus dalam fungsi TRIM seperti ini:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    Sekarang, hasil Anda benar-benar sempurna!

    Bagaimana formula ini bekerja:

    Intinya, cara kerja rumusnya sama seperti yang dijelaskan pada contoh sebelumnya. Perbedaannya adalah, dari array akhir yang disajikan ke fungsi TEXTJOIN, Anda perlu menghapus angka, bukan teks. Untuk melakukannya, kita menggunakan kombinasi fungsi IF dan ISERROR.

    Seperti yang Anda ingat, MID(...)+0 menghasilkan array angka dan #VALUE! error yang merepresentasikan karakter teks di posisi yang sama:

    {2;1;0;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;#NILAI!;}

    Fungsi ISERROR menangkap kesalahan dan meneruskan larik nilai Boolean yang dihasilkan ke IF:

    {FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    Ketika fungsi IF melihat TRUE (kesalahan), ia menyisipkan karakter teks yang sesuai ke dalam larik yang diproses dengan bantuan fungsi MID lainnya. Ketika fungsi IF melihat FALSE (angka), ia menggantinya dengan string kosong:

    {"";""";"";""; "S"; "u"; "n"; "s"; "e"; "t";""; "R"; "o"; "a"; "d"}

    Array terakhir ini diteruskan ke TEXTJOIN, sehingga ia menggabungkan karakter teks dan mengeluarkan hasilnya.

    Fungsi kustom untuk menghapus angka dari teks

    Solusi ini berfungsi untuk semua versi Excel

    Dengan mengingat bahwa rumus yang kuat harus tetap sederhana, saya akan membagikan kode fungsi yang ditentukan pengguna (UDF) untuk menghapus karakter numerik apa pun.

    Kode VBA 1:

    Fungsi HapusAngka(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i HapusAngka = sRes End Function

    Kode VBA 2:

    Fungsi HapusAngka(str As String ) As String With CreateObject ("VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" HapusAngka2 = .Replace(str, "" ) End With End Function

    Seperti halnya dengan fungsi RemoveText, kode kedua lebih baik digunakan di lembar kerja besar untuk mengoptimalkan kinerja.

    Setelah kode ditambahkan ke buku kerja Anda, Anda bisa menghapus semua karakter numerik dari sel menggunakan fungsi kustom ini:

    HapusAngka(string)

    Dalam kasus kita, rumus dalam B2 adalah:

    =HapusAngka(A2)

    Untuk memangkas spasi di depan jika ada, sarangkan fungsi kustom di dalam TRIM seperti yang Anda lakukan pada rumus asli:

    =TRIM(HapusAngka(A2))

    Pisahkan angka dan teks ke dalam kolom terpisah

    Dalam situasi ketika Anda ingin memisahkan teks dan angka ke dalam dua kolom, akan lebih baik jika pekerjaan itu dilakukan dengan satu formula, setuju? Untuk ini, kita cukup menggabungkan kode dari HapusTeks dan RemoveNumbers menjadi satu fungsi, bernama SplitTextNumbers , atau secara sederhana Berpisah , atau apa pun yang Anda suka :)

    Kode VBA 1:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End If EndFungsi

    Kode VBA 2:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else .Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Fungsi kustom baru kita memerlukan dua argumen:

    SplitTextNumbers(string, is_remove_text)

    Di mana is_remove_text adalah nilai Boolean yang menunjukkan karakter mana yang akan dihapus:

    • BENAR atau 1 - hapus teks dan simpan angka
    • SALAH atau 0 - hapus angka dan simpan teks

    Untuk set data sampel kami, rumus-rumusnya mengambil bentuk ini:

    Untuk menghapus karakter non-numerik:

    =SplitTextNumbers(A2, TRUE)

    Untuk menghapus karakter numerik:

    =BagiTeksBilangan(A2, FALSE)

    Tip. Untuk menghindari potensi masalah spasi di depan, saya sarankan untuk selalu membungkus rumus yang menghapus angka dalam fungsi TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Alat khusus untuk menghapus angka atau teks

    Bagi mereka yang tidak suka mempersulit hal-hal yang tidak perlu, saya akan menunjukkan cara kami sendiri untuk menghapus teks atau angka di Excel.

    Dengan asumsi Ultimate Suite kami ditambahkan ke pita Excel Anda, inilah yang Anda lakukan:

    1. Pada Data Ablebits tab, di tab Teks kelompok, klik Hapus > Hapus Karakter .

  • Pada panel add-in, pilih rentang sumber, pilih tombol Hapus set karakter dan pilih salah satu Teks karakter atau Numerik karakter dalam daftar drop-down.
  • Memukul Hapus dan nikmati hasilnya :)
  • Tip. Jika hasilnya mengandung beberapa spasi di depan, alat Trim Spaces akan menghilangkannya dalam waktu singkat.

    Itulah cara menghapus karakter teks atau numerik dari string di Excel. Saya berterima kasih telah membaca dan berharap dapat melihat Anda di blog kami minggu depan!

    Unduhan yang tersedia

    Hapus teks atau angka di Excel - contoh (file .xlsm)

    Ultimate Suite - versi percobaan (file .exe)

    Michael Brown adalah penggemar teknologi berdedikasi dengan hasrat untuk menyederhanakan proses kompleks menggunakan perangkat lunak. Dengan pengalaman lebih dari satu dekade di industri teknologi, dia telah mengasah keahliannya di Microsoft Excel dan Outlook, serta Google Spreadsheet dan Dokumen. Blog Michael didedikasikan untuk berbagi pengetahuan dan keahliannya dengan orang lain, memberikan tip dan tutorial yang mudah diikuti untuk meningkatkan produktivitas dan efisiensi. Apakah Anda seorang profesional berpengalaman atau pemula, blog Michael menawarkan wawasan berharga dan saran praktis untuk mendapatkan hasil maksimal dari perangkat lunak penting ini.