Excel katagidan matn yoki raqamlarni qanday olib tashlash mumkin

  • Buni Baham Ko'Ring
Michael Brown

Ushbu qo'llanma sizga Excelda matnni raqamlardan tabiiy formulalar va maxsus funktsiyalardan qanday ajratishni o'rgatadi. Shuningdek, siz matn va raqamlarni ikkita alohida ustunga bo'lishni o'rganasiz.

Tasavvur qiling: siz tahlil qilish uchun xom ma'lumotlarni olasiz va raqamlar bir ustunda matn bilan aralashganligini bilib olasiz. Aksariyat hollarda ularni yaqinroq tekshirish uchun alohida ustunlarga bo'lish qulayroq bo'ladi.

Agar siz bir hil ma'lumotlar bilan ishlayotgan bo'lsangiz, ehtimol siz "CHAP", "O'NG" va "O'RTA" funksiyalaridan foydalanishingiz mumkin. bir xil pozitsiyadan bir xil miqdordagi belgilar. Ammo bu laboratoriya tekshiruvlari uchun ideal stsenariy. Haqiqiy hayotda siz bir-biriga o'xshash bo'lmagan ma'lumotlar bilan shug'ullanishingiz mumkin, bu erda raqamlar matndan oldin, matndan keyin yoki matn o'rtasida keladi. Quyidagi misollar aynan shu holat uchun yechimlarni taqdim etadi.

    Matnni qanday olib tashlash va Excel kataklarida raqamlarni saqlash

    Yechim Excel 365, Excel 2021 da ishlaydi. , va Excel 2019

    Microsoft Excel 2019 oldingi versiyalarida mavjud boʻlmagan bir nechta yangi funksiyalarni taqdim etdi va biz hujayradan matn belgilarini olib tashlash uchun shunday funksiyalardan biri, yaʼni TEXTJOIN funksiyasidan foydalanamiz. raqamlarni o'z ichiga olgan.

    Umumiy formula:

    TEXTJOIN("", TRUE, IFERROR(MID( hujayra, ROW)(INDIRECT( "1:"&LEN(<1)>hujayra))), 1) *1, ""))

    Excel 365 va 2021 da bu ham ishlaydi:

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

    Bir qarashda formulalar biroz qo'rqinchli ko'rinishi mumkin, lekin ular ishlaydi :)

    Masalan, A2 formatidagi raqamlardan matnni olib tashlash uchun B2 formatidagi quyidagi formulalardan birini kiriting va undan so'ng uni kerak bo'lganda shuncha katakka ko'chiring.

    Excel 365 - 2019 da:

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

    Excel 2019 da u Ctrl + Shift + Enter tugmalari yordamida massiv formulasi sifatida kiritilishi kerak. Excel dinamik massivida u Enter tugmasi bilan to'ldirilgan oddiy formula sifatida ishlaydi.

    Excel 365 va 2021 da:

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

    Natijada barcha matn belgilari hujayradan olib tashlanadi va raqamlar saqlanadi:

    Ushbu formula qanday ishlaydi:

    Mantiqni yaxshiroq tushunish uchun, keling, tekshirishni boshlaylik. formulani ichkaridan:

    Siz umumiy songa mos keladigan raqamlar ketma-ketligini yaratish uchun QAT(INDIRECT("1:"&LEN(string))) yoki SEQUENCE(LEN(string)) dan foydalanasiz. manba qatoridagi belgilar soni va keyin ushbu ketma-ket raqamlarni MID funktsiyasiga boshlang'ich raqamlar sifatida kiriting. B2 da formulaning bu qismi quyidagicha ko'rinadi:

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

    MID funksiyasi har bir belgini A2 dan birinchisidan boshlab chiqaradi va ularni massiv sifatida qaytaradi:

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

    Ushbu massiv 1 ga ko'paytiriladi. Raqamli qiymatlar o'zgarmasdan saqlanib qoladi, raqamli bo'lmagan belgini ko'paytirish esa #VALUEga olib keladi! xato:

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

    IFERROR funksiyasi ishlaydibu xatolar va ularni boʻsh satrlar bilan almashtiradi:

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

    Ushbu yakuniy massiv massivdagi boʻsh boʻlmagan qiymatlarni birlashtiruvchi TEXTJOIN funksiyasiga xizmat qiladi ( ignore_empty argument TRUE ga o'rnatilgan) ajratuvchi uchun bo'sh satr ("") yordamida:

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

    Maslahat. Excel 2016 - 2007 uchun yechim ham mavjud, ammo formula ancha murakkab. Siz buni ushbu qo'llanmada topishingiz mumkin: Excelda raqamlarni qanday chiqarish mumkin.

    Raqamlardan matnni olib tashlash uchun maxsus funksiya

    Yechim barcha Excel versiyalari uchun ishlaydi

    Agar siz Excelning eski versiyasidan foydalansangiz yoki yuqoridagi formulalarni ham topsangiz eslab qolish qiyin, oddiyroq sintaksis va RemoveText kabi foydalanuvchi uchun qulay nom bilan o'z funksiyangizni yaratishga hech narsa xalaqit bermaydi. Foydalanuvchi tomonidan aniqlangan funktsiya (UDF) ikki usulda yozilishi mumkin:

    VBA kodi 1:

    Bu erda biz manba qatoridagi har bir belgini birma-bir ko'rib chiqamiz. bitta va raqamli yoki yo'qligini tekshiring. Agar raqam bo'lsa, belgi natijadagi satrga qo'shiladi.

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

    VBA code 2:

    Kod muntazam ifodani qayta ishlash uchun obyekt yaratadi. RegExp-dan foydalanib, biz manba qatoridan 0-9 raqamlaridan tashqari barcha belgilarni olib tashlaymiz.

    Funktsiya RemoveText(str As String ) bilan String sifatida CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) Function end bilan tugaydi

    Kichik ish varaqlarida ikkala kod ham bir xil darajada yaxshi ishlaydi. Funktsiya yuzlab yoki minglab marta chaqiriladigan katta ish varaqlarida VBScript.RegExp dan foydalanadigan 2-kod tezroq ishlaydi.

    Kodni ishchi kitobingizga kiritish bo'yicha batafsil qadamlarni bu yerda topishingiz mumkin: VBA-ni qanday kiritish kerak Excelda kod.

    Qaysi yondashuvni tanlamasligingizdan qat'iy nazar, oxirgi foydalanuvchi nuqtai nazaridan, matnni o'chirish va raqamlarni qoldirish funksiyasi shu qadar oddiy:

    RemoveText(string)

    Masalan, A2 yacheykasidan raqamli bo'lmagan belgilarni olib tashlang, B2 formulasi:

    =RemoveText(A2)

    Shunchaki uni ustunga ko'chiring, shunda siz quyidagi natijani olasiz:

    Eslatma. Mahalliy formulalar ham, maxsus funksiya ham raqamli qatorni chiqaradi. Uni raqamga aylantirish uchun natijani 1 ga ko'paytiring yoki nol qo'shing yoki formulani VALUE funksiyasiga o'rang. Masalan:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Excelda matn qatoridan raqamlarni qanday olib tashlash mumkin

    Yechim Excel 365, Excel 2021 va Excelda ishlaydi 2019

    Alfanumerik qatordan raqamlarni olib tashlash formulalari avvalgi misolda ko‘rib chiqilganlarga deyarli o‘xshash.

    Excel 365 - 2019 uchun:

    TEXTJOIN(" ", TRUE, AGAR(ISERR(MID( hujayra , QAT(BILOSHI)"1:"&LEN( hujayra ) )), 1) *1), MID( yacheyka , QAT (BEVOILOVIY("1:"&LEN( ) katak ))), 1), ""))

    Excel 2019 da Ctrl + Shift + Enter tugmalarini birga bosib, uni massiv formulasi ga aylantirishni unutmang.

    Excel 365 va 2021 uchun:

    TEXTJOIN("", TRUE, AGAR(ISERROR(MID( hujayra , SEQUENCE)(LEN( yacheyka 1) *1), MID ( hujayra , SEQUENCE(LEN( hujayra )), 1), ""))

    Masalan, A2 qatoridan raqamlarni ajratib olish uchun formula quyidagicha:

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

    Yoki

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

    Natijada yacheykadan barcha raqamlar olib tashlanadi va matn belgilari saqlanadi:

    Yuqoridagi skrinshotda ko'rsatilganidek, formula satrning istalgan pozitsiyasidan raqamli belgilarni ajratadi: boshida, oxirida va o'rtasida, ammo ogohlantirish bor: agar satr bo'lsa. raqamdan keyin bo'sh joy qo'yiladigan bilan boshlanadi, bu bo'sh joy saqlanib qoladi, bu esa oldingi bo'shliqlar muammosini keltirib chiqaradi (B2 da).

    Matn oldidagi qo'shimcha bo'shliqlardan xalos bo'lish uchun , formulani TRIM funksiyasiga quyidagicha o'rang:

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

    Endi, natijalaringiz mutlaqo mukammal!

    Ushbu formula qanday ishlaydi:

    Aslida formula avvalgi misolda tushuntirilgandek ishlaydi. Farqi shundaki, oxirgi massivdan TEXTJOIN funksiyasiga qadar matnni emas, raqamlarni olib tashlash kerak. Buni amalga oshirish uchun biz IF va ISERROR funksiyalarining kombinatsiyasidan foydalanamiz.

    Esingizda bo'lsa,MID(…)+0 raqamlar qatorini va #VALUE! bir xil pozitsiyalardagi matn belgilarini ifodalovchi xatolar:

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

    ISERROR funksiyasi xatolarni aniqlaydi va natijada mantiqiy qiymatlar qatorini IF:

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

    Agar funksiya TRUE (xato) ni ko‘rsa, u boshqa MID funksiyasi yordamida qayta ishlangan massivga tegishli matn belgisini kiritadi. IF funktsiyasi FALSE (raqam) ni ko'rsa, uni bo'sh qator bilan almashtiradi:

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

    Ushbu yakuniy massiv TEXTJOIN ga uzatiladi, shuning uchun u matn belgilarini birlashtiradi va natija.

    Matndan raqamlarni olib tashlash uchun maxsus funksiya

    Yechim barcha Excel versiyalari uchun ishlaydi

    Mustahkam formula saqlanishi kerakligini yodda tuting. oddiy, men har qanday raqamli belgilarni olib tashlash uchun foydalanuvchi tomonidan belgilangan funktsiya (UDF) kodini baham ko'raman.

    VBA kodi 1:

    Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) Agar False = IsNumeric(Mid(str, i, 1)) bo'lsa, sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    VBA code 2:

    Function RemoveNumbers(str As String ) CreateObject ("VBScript.RegExp") bilan string sifatida ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End with End Function

    RemoveText funktsiyasida bo'lgani kabi, ikkinchi kodni quyidagi dasturda ishlatish yaxshiroqdir. kattaunumdorlikni optimallashtirish uchun ishchi varaqlar.

    Kod ish kitobingizga qo'shilgach, ushbu maxsus funksiyadan foydalanib, hujayradan barcha raqamli belgilarni olib tashlashingiz mumkin:

    Raqamlarni (string) olib tashlash

    Bizning holatda, B2 formulasi:

    =RemoveNumbers(A2)

    Agar mavjud bo'lsa, bosh bo'shliqlarni kesish uchun TRIM ichidagi maxsus funktsiyani mahalliy formula kabi joylashtiring:

    =TRIM(RemoveNumbers(A2))

    Raqamlar va matnni alohida ustunlarga bo'ling

    Matn va raqamlarni ikkita ustunga ajratmoqchi bo'lsangiz, ishni bitta formula bilan bajarsangiz yaxshi bo'lardi. , rozimisiz? Buning uchun biz RemoveText va RemoveNumbers funksiyalarining kodini SplitTextNumbers yoki oddiygina Split deb nomlangan bitta funktsiyaga birlashtiramiz. xohlaganingizcha :)

    VBA kodi 1:

    Funktsiya SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" i = 1 To Len(str) uchun sCurChar = Mid(str, i, 1) Agar True = IsNumeric(sCurChar) bo'lsa, sNum = sNum & sCurChar Boshqa sText = sText & amp; sCurChar End If Next If Next i If True = is_remove_text Keyin SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End Funktsiya

    VBA kodi 2:

    Funktsiya SplitTextNumbers(str As String , is_remove_text) CreateObject bilan ( "VBScript.RegExp" ) .Global = rost bo'lsa rost = is_remove_text Keyin .Pattern = "[^0-9]" Boshqa.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End Function with End

    Bizning yangi maxsus funksiyamiz ikkita argument talab qiladi:

    SplitTextNumbers(string, is_remove_text)

    Bu yerda is_remove_text - bu qaysi belgilarni ajratish kerakligini ko'rsatadigan mantiqiy qiymat:

    • TRUE yoki 1 - matnni olib tashlash va raqamlarni saqlash
    • YOLG'ON yoki 0 - raqamlarni olib tashlash va matnni saqlash

    Bizning namunaviy ma'lumotlar to'plamimiz uchun formulalar quyidagi shaklni oladi:

    Raqamli bo'lmagan belgilarni o'chirish uchun:

    =SplitTextNumbers(A2, TRUE)

    Raqamli belgilarni o'chirish uchun :

    =SplitTextNumbers(A2, FALSE)

    Maslahat. Etakchi bo'shliqlar bilan yuzaga kelishi mumkin bo'lgan muammoning oldini olish uchun men har doim TRIM funksiyasida raqamlarni olib tashlaydigan formulani o'rashni tavsiya qilaman:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Raqamlarni yoki matnni o'chirish uchun maxsus vosita

    Shunday qiladiganlar uchun narsalarni keraksiz murakkablashtirishni yoqtirmayman, men Excelda matn yoki raqamlarni olib tashlashning o‘ziga xos usulini ko‘rsataman.

    Agar bizning Ultimate Suite Excel tasmangizga qo‘shilgan bo‘lsa, siz shunday qilasiz:

    1. Ablebits Data yorlig'idagi Matn guruhida O'chirish > Belgilarni o'chirish -ni bosing.

  • Kengaytma panelida manba diapazonini tanlang, Belgilar toʻplamini oʻchirish opsiyasini tanlang va Matn <1-ni tanlang. Ochiladigan ro'yxatda>belgilar yoki Raqamli belgilar .
  • O'chirish -ni bosing va natijadan bahramand bo'ling :)
  • Maslahat. Agar natijalarda ba'zi bosh bo'shliqlar bo'lsa, Bo'shliqlarni kesishvosita ularni qisqa vaqt ichida yo'q qiladi.

    Mana, Excelda matn yoki raqamli belgilarni satrdan olib tashlash mumkin. O'qiganingiz uchun minnatdorchilik bildiraman va sizni keyingi haftada blogimizda ko'rishni orziqib kutaman!

    Mavjud yuklab olishlar

    Excelda matn yoki raqamlarni o'chirish - misollar (.xlsm fayli)

    Ultimate Suite - sinov versiyasi (.exe fayli)

    Maykl Braun - dasturiy vositalardan foydalangan holda murakkab jarayonlarni soddalashtirishga ishtiyoqi bo'lgan maxsus texnologiya ishqibozi. Texnologiya sohasida o'n yildan ortiq tajribaga ega bo'lgan holda, u Microsoft Excel va Outlook, shuningdek, Google Sheets va Docs dasturlarida o'z mahoratini oshirdi. Mayklning blogi o'z bilimi va tajribasini boshqalar bilan baham ko'rishga, samaradorlik va samaradorlikni oshirish uchun amal qilish oson maslahatlar va o'quv qo'llanmalariga bag'ishlangan. Tajribali mutaxassismisiz yoki yangi boshlovchi boʻlasizmi, Mayklning blogi ushbu muhim dasturiy vositalardan maksimal darajada foydalanish uchun qimmatli tushunchalar va amaliy maslahatlarni taqdim etadi.