Bagaimana untuk mengalih keluar teks atau nombor daripada sel Excel

  • Berkongsi Ini
Michael Brown

Tutorial ini akan mengajar anda cara mengasingkan teks daripada nombor dalam Excel dengan menggunakan formula asli dan fungsi tersuai. Anda juga akan belajar cara membahagikan teks dan nombor kepada dua lajur yang berasingan.

Bayangkan ini: anda menerima data mentah untuk analisis dan mengetahui bahawa nombor bercampur dengan teks dalam satu lajur. Dalam kebanyakan situasi, pastinya lebih mudah untuk meletakkannya dalam lajur berasingan untuk pemeriksaan yang lebih dekat.

Sekiranya anda menggunakan data homogen, anda mungkin boleh menggunakan fungsi KIRI, KANAN dan MID untuk mengekstrak bilangan aksara yang sama dari kedudukan yang sama. Tetapi itu adalah senario yang ideal untuk ujian makmal. Dalam kehidupan sebenar, anda berkemungkinan besar berurusan dengan data yang berbeza di mana nombor datang sebelum teks, selepas teks atau antara teks. Contoh di bawah memberikan penyelesaian tepat untuk kes ini.

    Cara mengalih keluar teks dan menyimpan nombor dalam sel Excel

    Penyelesaian berfungsi dalam Excel 365, Excel 2021 , dan Excel 2019

    Microsoft Excel 2019 memperkenalkan beberapa fungsi baharu yang tidak tersedia dalam versi terdahulu dan kami akan menggunakan salah satu fungsi tersebut, iaitu TEXTJOIN, untuk menanggalkan aksara teks daripada sel mengandungi nombor.

    Formula generik ialah:

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

    Dalam Excel 365 dan 2021, yang ini juga akan berfungsi:

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

    Pada pandangan pertama, formula mungkin kelihatan agak menakutkan, tetapi ia berfungsi :)

    Sebagai contoh, untuk mengalih keluar teks daripada nombor dalam A2, masukkan salah satu daripada formula di bawah dalam B2, dan kemudian salin ke seberapa banyak sel yang diperlukan.

    Dalam Excel 365 - 2019:

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

    Dalam Excel 2019, ia mesti dimasukkan sebagai formula tatasusunan dengan Ctrl + Shift + Enter . Dalam tatasusunan dinamik Excel, ia berfungsi sebagai formula biasa yang dilengkapkan dengan kekunci Enter.

    Dalam Excel 365 dan 2021:

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

    Hasilnya, semua aksara teks adalah dialih keluar daripada sel dan nombor disimpan:

    Cara formula ini berfungsi:

    Untuk lebih memahami logik, mari kita mula menyiasat formula dari dalam:

    Anda menggunakan sama ada ROW(INDIRECT("1:"&LEN(rentetan))) atau SEQUENCE(LEN(rentetan)) untuk mencipta jujukan nombor yang sepadan dengan jumlah nombor daripada aksara dalam rentetan sumber, dan kemudian suapkan nombor berjujukan tersebut ke fungsi MID sebagai nombor permulaan. Dalam B2, bahagian formula ini kelihatan seperti berikut:

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

    Fungsi MID mengekstrak setiap aksara daripada A2 bermula dengan yang pertama dan mengembalikannya sebagai tatasusunan:

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

    Tatasusunan ini didarab dengan 1. Nilai berangka kekal tanpa perubahan, sambil mendarab aksara bukan angka menghasilkan #VALUE! ralat:

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

    Fungsi IFERROR mengendalikanralat ini dan menggantikannya dengan rentetan kosong:

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

    Tatasusunan akhir ini disampaikan kepada fungsi TEXTJOIN, yang menggabungkan nilai bukan kosong dalam tatasusunan ( ignore_empty argumen ditetapkan kepada TRUE) menggunakan rentetan kosong ("") untuk pembatas:

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

    Petua. Untuk Excel 2016 - 2007, penyelesaian juga wujud, tetapi formulanya jauh lebih kompleks. Anda boleh menemuinya dalam tutorial ini: Cara mengekstrak nombor dalam Excel.

    Fungsi tersuai untuk mengalih keluar teks daripada nombor

    Penyelesaian berfungsi untuk semua versi Excel

    Jika anda menggunakan versi Excel yang lebih lama atau temui formula di atas juga sukar untuk diingati, tiada apa yang menghalang anda daripada mencipta fungsi anda sendiri dengan sintaks yang lebih ringkas dan nama mesra pengguna seperti RemoveText . Fungsi takrif pengguna (UDF) boleh ditulis dalam dua cara:

    Kod VBA 1:

    Di sini, kita melihat setiap aksara dalam rentetan sumber satu demi satu satu dan semak sama ada ia angka atau tidak. Jika nombor, aksara ditambah pada rentetan yang terhasil.

    Fungsi RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) Kemudian sRes = sRes & Pertengahan(str, i, 1) Tamat Jika Seterusnya i RemoveText = sRes End Function

    Kod VBA 2:

    Kod mencipta objek untuk memproses ungkapan biasa. Menggunakan RegExp, kami mengalih keluar semua aksara selain daripada digit 0-9 daripada rentetan sumber.

    Fungsi RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp") .Global = True .Corak = "[^0-9]" RemoveText = .Replace(str, "") Tamat Dengan Fungsi Tamat

    Pada lembaran kerja kecil, kedua-dua kod akan berfungsi dengan baik. Pada lembaran kerja besar yang fungsinya dipanggil ratusan atau ribuan kali, kod 2 yang menggunakan VBScript.RegExp akan berfungsi dengan lebih pantas.

    Langkah terperinci untuk memasukkan kod dalam buku kerja anda boleh didapati di sini: Cara memasukkan VBA kod dalam Excel.

    Mana-mana pendekatan yang anda pilih, dari perspektif pengguna akhir, fungsi untuk memadam teks dan meninggalkan nombor adalah semudah ini:

    RemoveText(string)

    Contohnya, untuk alih keluar aksara bukan angka daripada sel A2, formula dalam B2 ialah:

    =RemoveText(A2)

    Cukup salin ke bawah lajur dan anda akan mendapat hasil ini:

    Nota. Kedua-dua formula asli dan fungsi tersuai mengeluarkan rentetan angka . Untuk mengubahnya menjadi nombor, darabkan hasil dengan 1, atau tambah sifar, atau bungkus formula dalam fungsi VALUE. Contohnya:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Cara mengalih keluar nombor daripada rentetan teks dalam Excel

    Penyelesaian berfungsi dalam Excel 365, Excel 2021 dan Excel 2019

    Formula untuk mengalih keluar nombor daripada rentetan abjad angka hampir serupa dengan yang dibincangkan dalam contoh sebelumnya.

    Untuk Excel 365 - 2019:

    TEXTJOIN(" ", BENAR, JIKA(ISERR(MID( sel , ROW(TIDAK LANGSUNG("1:"&LEN( sel ) )), 1) *1), MID( sel , ROW(TIDAK LANGSUNG("1:"&LEN( sel ))), 1), ""))

    Dalam Excel 2019, ingat untuk menjadikannya formula tatasusunan dengan menekan kekunci Ctrl + Shift + Enter bersama-sama.

    Untuk Excel 365 dan 2021:

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

    Contohnya, untuk menanggalkan nombor daripada rentetan dalam A2, formulanya ialah:

    =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), ""))

    Akibatnya, semua nombor dialih keluar daripada sel dan aksara teks disimpan:

    Seperti yang ditunjukkan dalam tangkapan skrin di atas, formula menjalurkan aksara berangka dari mana-mana kedudukan dalam rentetan: pada permulaan, akhir dan tengah. Walau bagaimanapun, terdapat kaveat: jika rentetan bermula dengan nombor diikuti dengan ruang , ruang itu dikekalkan, yang menghasilkan masalah ruang utama (seperti dalam B2).

    Untuk menyingkirkan ruang tambahan sebelum teks , bungkus formula dalam fungsi TRIM seperti ini:

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

    Kini, hasil anda benar-benar sempurna!

    Cara formula ini berfungsi:

    Pada dasarnya, formula berfungsi sama seperti yang dijelaskan dalam contoh sebelumnya. Perbezaannya ialah, daripada tatasusunan terakhir yang disampaikan kepada fungsi TEXTJOIN, anda perlu mengalih keluar nombor, bukan teks. Untuk melakukannya, kami menggunakan gabungan fungsi IF dan ISERROR.

    Seperti yang anda ingat,MID(…)+0 menjana tatasusunan nombor dan #VALUE! ralat yang mewakili aksara teks dalam kedudukan yang sama:

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

    Fungsi ISERROR menangkap ralat dan menghantar tatasusunan nilai Boolean yang terhasil kepada IF:

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

    Apabila fungsi IF melihat TRUE (ralat), ia memasukkan aksara teks yang sepadan ke dalam tatasusunan yang diproses dengan bantuan fungsi MID yang lain. Apabila fungsi IF melihat FALSE (nombor), ia menggantikannya dengan rentetan kosong:

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

    Susun atur akhir ini diserahkan kepada TEXTJOIN, jadi ia menggabungkan aksara teks dan mengeluarkan hasilnya.

    Fungsi tersuai untuk mengalih keluar nombor daripada teks

    Penyelesaian berfungsi untuk semua versi Excel

    Perlu diingat bahawa formula yang teguh harus disimpan mudah, saya akan berkongsi kod fungsi yang ditentukan pengguna (UDF) untuk menanggalkan sebarang aksara angka.

    Kod VBA 1:

    Fungsi RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Kemudian sRes = sRes & Pertengahan(str, i, 1) Tamat Jika Seterusnya i RemoveNumbers = sRes End Function

    VBA code 2:

    Function RemoveNumbers(str As String ) Sebagai Rentetan Dengan CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "") End With End Function

    Seperti yang berlaku pada fungsi RemoveText, kod kedua adalah lebih baik untuk digunakan dalam besarlembaran kerja untuk mengoptimumkan prestasi.

    Setelah kod ditambahkan pada buku kerja anda, anda boleh mengalih keluar semua aksara angka daripada sel menggunakan fungsi tersuai ini:

    RemoveNumbers(string)

    Dalam kes kami, formula dalam B2 ialah:

    =RemoveNumbers(A2)

    Untuk memangkas ruang hadapan jika ada, sarangkan fungsi tersuai di dalam TRIM seperti yang anda lakukan pada formula asli:

    =TRIM(RemoveNumbers(A2))

    Pisah nombor dan teks kepada lajur yang berasingan

    Dalam situasi apabila anda ingin mengasingkan teks dan nombor kepada dua lajur, adalah bagus untuk menyelesaikan tugas dengan satu formula , setuju? Untuk ini, kami hanya menggabungkan kod fungsi RemoveText dan RemoveNumbers ke dalam satu fungsi, bernama SplitTextNumbers atau hanya Split , atau apa sahaja yang anda suka :)

    Kod VBA 1:

    Fungsi SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" Untuk i = 1 Kepada Len(str) sCurChar = Mid(str, i, 1) Jika Benar = IsNumeric(sCurChar) Kemudian 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 Function

    VBA code 2:

    Function SplitTextNumbers(str As String , is_remove ) Astext As_remove Dengan CreateObject ( "VBScript.RegExp") .Global = Benar Jika Benar = is_remove_text Kemudian .Corak = "[^0-9]" Lain.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "") End With End Function

    Fungsi tersuai baharu kami memerlukan dua argumen:

    SplitTextNumbers(string, is_remove_text)

    Di mana is_remove_text ialah nilai Boolean yang menunjukkan aksara yang hendak dilucutkan:

    • TRUE atau 1 - alih keluar teks dan simpan nombor
    • FALSE atau 0 - alih keluar nombor dan simpan teks

    Untuk set data sampel kami, formula menggunakan borang ini:

    Untuk mengalih keluar aksara bukan angka:

    =SplitTextNumbers(A2, TRUE)

    Untuk memadamkan aksara angka :

    =SplitTextNumbers(A2, FALSE)

    Petua. Untuk mengelakkan kemungkinan masalah ruang utama, saya mengesyorkan sentiasa membalut formula yang mengalih keluar nombor dalam fungsi TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Alat khas untuk mengalih keluar nombor atau teks

    Bagi mereka yang melakukannya bukan seperti merumitkan perkara yang tidak perlu, saya akan menunjukkan cara kita sendiri untuk mengalih keluar teks atau nombor dalam Excel.

    Dengan mengandaikan Suite Ultimate kami ditambahkan pada reben Excel anda, inilah yang anda lakukan:

    1. Pada tab Ablebits Data , dalam kumpulan Teks , klik Alih Keluar > Alih Keluar Aksara .

  • Pada anak tetingkap tambahan, pilih julat sumber, pilih pilihan Alih keluar set aksara dan pilih sama ada Teks aksara atau Numerik aksara dalam senarai lungsur turun.
  • Tekan Alih keluar dan nikmati hasilnya :)
  • Petua. Jika hasilnya mengandungi beberapa ruang utama, Ruang Pangkasalat akan menghapuskannya dalam masa yang singkat.

    Begitulah cara untuk mengalih keluar aksara teks atau angka daripada rentetan dalam Excel. Saya mengucapkan terima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu depan!

    Muat turun yang tersedia

    Alih keluar teks atau nombor dalam Excel - contoh (fail .xlsm)

    Suite Ultimate - versi percubaan (fail .exe)

    Michael Brown ialah peminat teknologi yang berdedikasi dengan semangat untuk memudahkan proses kompleks menggunakan alat perisian. Dengan lebih sedekad pengalaman dalam industri teknologi, beliau telah mengasah kemahirannya dalam Microsoft Excel dan Outlook, serta Helaian Google dan Dokumen. Blog Michael berdedikasi untuk berkongsi pengetahuan dan kepakarannya dengan orang lain, menyediakan petua dan tutorial yang mudah diikuti untuk meningkatkan produktiviti dan kecekapan. Sama ada anda seorang profesional berpengalaman atau pemula, blog Michael menawarkan pandangan berharga dan nasihat praktikal untuk memanfaatkan sepenuhnya alatan perisian penting ini.