Mündəricat
Bu dərslik sizə yerli düsturlar və fərdi funksiyalardan istifadə etməklə Excel-də mətni rəqəmlərdən necə ayırmağı öyrədəcək. Siz həmçinin mətni və rəqəmləri iki ayrı sütuna bölməyi öyrənəcəksiniz.
Bunu təsəvvür edin: siz analiz üçün xam məlumatları alırsınız və rəqəmlərin bir sütunda mətnlə qarışdırıldığını öyrənin. Əksər hallarda onları daha yaxından araşdırmaq üçün ayrı-ayrı sütunlarda saxlamaq daha rahat olacaq.
Əgər siz homojen verilənlərlə işləyirsinizsə, yəqin ki, siz SOL, SAĞ və MID funksiyalarından istifadə edə bilərsiniz. eyni mövqedən eyni sayda simvol. Lakin bu, laboratoriya testləri üçün ideal bir ssenaridir. Real həyatda, çox güman ki, nömrələrin mətndən əvvəl, mətndən sonra və ya mətn arasında gəldiyi fərqli məlumatlarla qarşılaşacaqsınız. Aşağıdakı nümunələr məhz bu hal üçün həllər təqdim edir.
Mətni necə çıxarmaq və Excel xanalarında nömrələri saxlamaq olar
Həll Excel 365, Excel 2021-də işləyir. , və Excel 2019
Microsoft Excel 2019 əvvəlki versiyalarda mövcud olmayan bir neçə yeni funksiya təqdim etdi və biz mətn simvollarını hüceyrədən çıxarmaq üçün belə funksiyalardan birini, yəni TEXTJOIN-dən istifadə edəcəyik. ədədləri ehtiva edir.
Ümumi düstur belədir:
TEXTJOIN("", TRUE, IFERROR(MID( xana, ROW(DOOLAY( "1:"&LEN(<1))>cell))), 1) *1, ""))Excel 365 və 2021-də bu da işləyəcək:
TEXTJOIN("", TRUE,IFERROR(MID( hüceyrə, SEQUENCE(LEN( cell)), 1) *1, ""))İlk baxışda düsturlar bir az qorxuducu görünə bilər, lakin onlar işləyir :)
Məsələn, A2-dəki rəqəmlərdən mətni silmək üçün B2-də aşağıdakı düsturlardan birini daxil edin və sonra onu lazım olan qədər xanaya köçürün.
Excel 365 - 2019-da:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))
Excel 2019-da Ctrl + Shift + Enter ilə massiv düsturu kimi daxil edilməlidir. Excel dinamik massivində o, Enter düyməsi ilə tamamlanan adi düstur kimi işləyir.
Excel 365 və 2021-də:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
Nəticədə bütün mətn simvolları xanadan silinir və nömrələr saxlanılır:
Bu düstur necə işləyir:
Məntiqi daha yaxşı başa düşmək üçün araşdırmaya başlayaq düstur içəridən:
Ümumi ədədə uyğun rəqəmlər ardıcıllığı yaratmaq üçün ya ROW(DOOLAY("1:"&LEN(string))) və ya SEQUENCE(LEN(string)) istifadə edirsiniz mənbə sətirindəki simvolların sayını seçin və sonra həmin ardıcıl nömrələri başlanğıc nömrələr kimi MID funksiyasına ötürün. B2-də düsturun bu hissəsi aşağıdakı kimi görünür:
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
MID funksiyası A2-dən ilk simvoldan başlayaraq hər simvolu çıxarır və onları massiv kimi qaytarır:
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Bu massiv 1-ə vurulur. Rəqəmli dəyərlər heç bir dəyişiklik olmadan davam edir, qeyri-rəqəm simvolunu vurmaq isə #VALUE ilə nəticələnir! xəta:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
IFERROR funksiyası işləyirbu səhvləri və onları boş sətirlərlə əvəz edir:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
Bu son massiv massivdəki boş olmayan dəyərləri birləşdirən TEXTJOIN funksiyasına xidmət edir ( iqnor_boş ayırıcı üçün boş sətirdən ("") istifadə edərək arqumenti TRUE olaraq təyin edin:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
İpucu. Excel 2016 - 2007 üçün bir həll də mövcuddur, lakin düstur daha mürəkkəbdir. Bunu bu təlimatda tapa bilərsiniz: Excel-də nömrələri necə çıxarmaq olar.
Nömrələrdən mətni silmək üçün fərdi funksiya
Hol bütün Excel versiyaları üçün işləyir
Excel'in köhnə versiyasından istifadə edirsinizsə və ya yuxarıdakı düsturları da tapırsınızsa yadda saxlamaq çətindir, heç nə sizə daha sadə sintaksis və RemoveText kimi istifadəçi dostu adla öz funksiyanızı yaratmağa mane olmur. İstifadəçi tərəfindən təyin edilmiş funksiya (UDF) iki şəkildə yazıla bilər:
VBA kodu 1:
Burada mənbə sətirindəki hər simvola bir-bir baxırıq. bir və rəqəmsal olub olmadığını yoxlayın. Əgər ədəd olarsa, simvol nəticədəki sətirə əlavə edilir.
Funksiya RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i) , 1)) Sonra sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End FunctionVBA code 2:
Kod normal ifadəni emal etmək üçün obyekt yaradır. RegExp istifadə edərək mənbə sətirindən 0-9 rəqəmlərindən başqa bütün simvolları silirik.
Funksiya RemoveText(str As String ) With String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) Function with EndKiçik iş vərəqlərində hər iki kod eyni dərəcədə yaxşı işləyəcək. Funksiyanın yüzlərlə və ya minlərlə dəfə çağırıldığı böyük iş vərəqlərində VBScript.RegExp istifadə edən kod 2 daha sürətli işləyəcək.
Kodu iş kitabınıza daxil etmək üçün ətraflı addımları burada tapa bilərsiniz: VBA-nı necə daxil etmək olar Excel-də kod.
Hansı yanaşmanı seçdiyinizdən asılı olmayaraq, son istifadəçi nöqteyi-nəzərindən mətni silmək və nömrələri tərk etmək funksiyası bu qədər sadədir:
RemoveText(string)Məsələn, A2 xanasından rəqəmsiz simvolları silin, B2-dəki düstur:
=RemoveText(A2)
Sadəcə onu sütuna köçürün və bu nəticəni əldə edəcəksiniz:
Qeyd. Həm yerli düsturlar, həm də fərdi funksiya rəqəmli sətir verir. Onu ədədə çevirmək üçün nəticəni 1-ə vurun və ya sıfır əlavə edin və ya düsturu VALUE funksiyasına sarın. Məsələn:
=RemoveText(A2) + 0
=VALUE(RemoveText(A2))
Excel-də mətn sətirindən nömrələri necə silmək olar
Həll Excel 365, Excel 2021 və Excel-də işləyir 2019
Əlifba-rəqəm sətirindən nömrələri silmək üçün düsturlar əvvəlki misalda müzakirə olunanlara çox oxşardır.
Excel 365 - 2019 üçün:
TEXTJOIN(" ", DOĞRU, ƏGƏR(ISERR(MID( hüceyrə , SATIR(DOLAYI)"1:"&LEN( hüceyrə ) )), 1) *1), MID( xana , SATIR(DOLAYI("1:"&LEN( ) xana ))), 1), ""))Excel 2019-da Ctrl + Shift + Enter düymələrini birlikdə basaraq onu massiv düsturuna çevirməyi unutmayın.
Excel 365 və 2021 üçün:
TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE)(LEN( cell 1) *1), MID ( xana , SEQUENCE(LEN( xana )), 1), ""))Məsələn, A2-də sətirdən nömrələri çıxarmaq üçün düstur belədir:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
Vəya
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
Nəticədə bütün nömrələr xanadan silinir və mətn simvolları saxlanılır:
Yuxarıdakı ekran görüntüsündə göstərildiyi kimi, düstur sətirdəki istənilən mövqedən rəqəmli simvolları ayırır: başlanğıcda, sonunda və ortada.Lakin bir xəbərdarlıq var: əgər sətir rəqəmdən sonra boşluq ilə başlayır, bu boşluq saxlanılır və bu, aparıcı boşluqlarla bağlı problem yaradır (B2-də olduğu kimi).
Mətndən əvvəl əlavə boşluqlardan xilas olmaq üçün , düsturu TRIM funksiyasına belə sarın:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
İndi nəticələriniz tamamilə mükəmməldir!
Bu düstur necə işləyir:
Əslində, düstur əvvəlki misalda izah edildiyi kimi işləyir. Fərq ondadır ki, təqdim olunan son massivdən TEXTJOIN funksiyasına qədər siz mətni deyil, rəqəmləri silməlisiniz. Bunu etmək üçün biz IF və ISERROR funksiyalarının birləşməsindən istifadə edirik.
Xatırladığınız kimi,MID(…)+0 rəqəmlər massivi və #VALUE yaradır! eyni mövqelərdə olan mətn simvollarını təmsil edən xətalar:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
ISERROR funksiyası səhvləri tutur və nəticədə Boolean dəyərləri massivini IF:
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}
{"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Bu son massiv TEXTJOIN-ə ötürülür, ona görə də mətn simvollarını birləşdirərək, nəticə.
Mətndən rəqəmləri silmək üçün fərdi funksiya
Həll bütün Excel versiyaları üçün işləyir
Sağlam düsturun saxlanmalı olduğunu nəzərə alaraq sadədir, mən istənilən rəqəmli simvolu silmək üçün istifadəçi tərəfindən müəyyən edilmiş funksiyanın (UDF) kodunu paylaşacağam.
VBA kodu 1:
Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) Əgər False = IsNumeric(Mid(str, i, 1)) Əgər sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End FunctionVBA code 2:
Function RemoveNumbers(str As String ) With String With CreateObject ( "VBScript.RegExp" ) .Global = Doğrudur .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End with End FunctionRemoveText funksiyasında olduğu kimi, ikinci koddan istifadə etmək daha yaxşıdır. böyükperformansı optimallaşdırmaq üçün iş vərəqləri.
Kod iş kitabınıza əlavə edildikdən sonra siz bu xüsusi funksiyadan istifadə edərək xanadan bütün rəqəmli simvolları silə bilərsiniz:
Nömrələri (sətir) SilBizim halda, B2-də düstur belədir:
=RemoveNumbers(A2)
Əgər varsa, qabaqcıl boşluqları kəsmək üçün TRIM daxilində fərdi funksiyanı yerli düstur kimi yerləşdirin:
=TRIM(RemoveNumbers(A2))
Rəqəmləri və mətni ayrı-ayrı sütunlara bölmək
Mətn və rəqəmləri iki sütuna ayırmaq istədiyiniz bir vəziyyətdə, işi bir düsturla yerinə yetirmək yaxşı olardı. , razılaşmaq? Bunun üçün biz sadəcə RemoveText və RemoveNumbers funksiyalarının kodunu SplitTextNumbers adlı bir funksiyaya birləşdiririk və ya sadəcə olaraq Split və ya nə istəsəniz :)
VBA kodu 1:
Funksiya 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) üçün sCurChar = Mid(str, i, 1) True = IsNumeric(sCurChar) olarsa, sNum = sNum & sCurChar Başqa sText = sText & sCurChar End If Next i If True = is_remove_text Onda SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End FunctionVBA code 2:
Function SplitTextNumbers(str As String , is_remove_re) String Asmovole CreateObject ilə ( "VBScript.RegExp" ) .Global = Doğrudursa Doğrudur = is_remove_text Sonra .Nümunə = "[^0-9]" Başqa.Pattern = "[0-9]" SplitTextNumbers = .Əvəz et(str, "" ) Son Funksiyası ilə bitirYeni fərdi funksiyamız iki arqument tələb edir:
SplitTextNumbers(string, is_remove_text)Burada is_remove_text hansı simvolların kəsiləcəyini göstərən Boolean dəyəridir:
- DOĞRU və ya 1 - mətni silin və rəqəmləri saxlayın
- YANLIŞ və ya 0 - nömrələri silin və mətni saxlayın
Nümunə verilənlər bazamız üçün düsturlar bu formanı alır:
Qeyri-rəqəm simvolları silmək üçün:
=SplitTextNumbers(A2, TRUE)
Rəqəm simvollarını silmək üçün :
=SplitTextNumbers(A2, FALSE)
İpucu. Aparıcı boşluqlarla bağlı potensial problemin qarşısını almaq üçün mən həmişə TRIM funksiyasında nömrələri silən düsturun qablaşdırılmasını tövsiyə edirəm:
=TRIM(SplitTextNumbers(A2, FALSE))
Nömrələri və ya mətni silmək üçün xüsusi alət
Elə edənlər üçün işləri lazımsız yerə çətinləşdirmək kimi deyil, mən Exceldə mətn və ya rəqəmləri silmək üçün öz üsulumuzu göstərəcəyəm.
Ultimate Suite-in Excel lentinizə əlavə edildiyini fərz etsək, belə edirsiniz:
- Ablebits Data tabında, Mətn qrupunda, Sil > Sifarişləri Sil üzərinə klikləyin.
İpucu. Nəticələr bəzi aparıcı boşluqları ehtiva edərsə, Boşluqları Kəsməalət onları qısa zamanda aradan qaldıracaq.
Excel-də sətirdən mətn və ya rəqəmli simvolları belə silmək olar. Oxuduğunuz üçün sizə təşəkkür edirəm və sizi gələn həftə bloqumuzda görməyi səbirsizliklə gözləyirəm!
Mövcud endirmələr
Excel-də mətn və ya rəqəmləri silin - nümunələr (.xlsm faylı)
Ultimate Suite - sınaq versiyası (.exe faylı)