Агуулгын хүснэгт
Энэ заавар нь Excel-ийн үндсэн томьёо болон захиалгат функцуудыг ашиглан текстийг тооноос хэрхэн салгах талаар заах болно. Та мөн текст болон тоог хоёр тусдаа баганад хэрхэн хуваах талаар сурах болно.
Та төсөөлөөд үз дээ: та шинжилгээнд зориулж түүхий өгөгдлийг хүлээн авч, нэг баганад тоонууд тексттэй холилдсон болохыг олж мэдээрэй. Ихэнх тохиолдолд тэдгээрийг нарийвчлан судлахын тулд тэдгээрийг тусад нь баганад оруулах нь илүү тохиромжтой байх болно.
Хэрэв та нэгэн төрлийн өгөгдөлтэй ажиллаж байгаа бол ЗҮҮН, БАРУУН, ДУНД функцуудыг ашиглаж болно. ижил байрлалаас ижил тооны тэмдэгтүүд. Гэхдээ энэ нь лабораторийн шинжилгээнд хамгийн тохиромжтой хувилбар юм. Бодит амьдрал дээр та текстийн өмнө, текстийн дараа эсвэл текстийн хооронд тоо гарч ирдэг ялгаатай өгөгдөлтэй ажиллах магадлал өндөр байдаг. Доорх жишээнүүд нь яг энэ тохиолдолд шийдлийг өгдөг.
Текстийг хэрхэн устгах, Excel нүднүүдэд тоог хэрхэн хадгалах вэ
Энэ шийдэл нь Excel 365, Excel 2021 дээр ажилладаг. , болон Excel 2019
Microsoft Excel 2019 нь өмнөх хувилбаруудад байхгүй хэд хэдэн шинэ функцийг нэвтрүүлсэн бөгөөд бид эдгээр функцүүдийн нэг болох TEXTJOIN-ийг нүднээсээ текст тэмдэгтүүдийг арилгахад ашиглах гэж байна. тоо агуулсан.
Ерөнхий томьёо нь:
TEXTJOIN("", ҮНЭН, IFERROR(MID( нүд, ROW(ШУУД( "1:"&LEN(<1)>нүд))), 1) *1, ""))Excel 365 болон 2021 дээр энэ нь бас ажиллах болно:
TEXTJOIN("", ҮНЭН,IFERROR(MID( нүд, SEQUENCE(LEN( нүд)), 1) *1, ""))Анхны харцаар томьёо нь жаахан айдас төрүүлж магадгүй, гэхдээ тэдгээр нь ажилладаг :)
Жишээ нь, А2 дахь тоонуудаас текстийг хасахын тулд B2-д доорх томьёоны аль нэгийг оруулаад, шаардлагатай олон нүд рүү хуулж аваарай.
Excel 365 - 2019 дээр:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))
Excel 2019-д үүнийг Ctrl + Shift + Enter ашиглан массив томьёо болгон оруулах ёстой. Excel-ийн динамик массив дээр энэ нь Enter товчлуураар бөглөсөн ердийн томъёогоор ажилладаг.
Excel 365 болон 2021:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
Үүний үр дүнд бүх текст тэмдэгтүүд нүднээс хасагдаж, тоонууд хадгалагдана:
Энэ томъёо хэрхэн ажилладаг вэ:
Логикийг илүү сайн ойлгохын тулд судалж эхэлцгээе. дотроос томьёо:
Та нийт тоонд тохирох тоонуудын дараалал үүсгэхийн тулд ROW(ШУУД("1:"&LEN(string))) эсвэл SEQUENCE(LEN(string))-ийн аль нэгийг ашиглана. эх тэмдэгт мөр дэх тэмдэгтүүдийг оруулаад дараа нь тэдгээр дараалсан тоонуудыг MID функцэд эхлэлийн тоо болгон өгнө. B2 дээр томъёоны энэ хэсэг дараах байдалтай байна:
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
MID функц нь А2-аас эхний тэмдэгтээс эхлэн тэмдэгт бүрийг гаргаж аваад массив болгон буцаана:
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Энэ массивыг 1-ээр үржүүлнэ. Тоон утгууд нь өөрчлөлтгүйгээр үлддэг бол тоон бус тэмдэгтийг үржүүлэхэд #VALUE! алдаа:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
IFERROR функцийг зохицуулдагэдгээр алдаануудыг хоосон мөрүүдээр солино:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
Энэхүү эцсийн массив нь массив дахь хоосон бус утгуудыг нэгтгэдэг ( үл тоомсорлох_хоосон ) TEXTJOIN функцэд үйлчилдэг. Аргументыг ҮНЭН гэж тохируулсан) заагчийн хувьд хоосон мөр ("") ашиглан:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
Зөвлөгөө. Excel 2016 - 2007 хувилбарын хувьд шийдэл бас байгаа боловч томъёо нь илүү төвөгтэй юм. Та үүнийг энэ гарын авлагаас олж болно: Excel дээр тоог хэрхэн задлах вэ.
Тооноос текст устгах тусгай функц
Энэ шийдэл нь Excel-ийн бүх хувилбарт ажиллана
Хэрэв та Excel-ийн хуучин хувилбарыг ашиглаж байгаа эсвэл дээрх томьёог мөн олоорой. санахад хэцүү тул RemoveText гэх мэт энгийн синтакс болон хэрэглэгчдэд ээлтэй нэрээр өөрийн функцийг бүтээхэд юу ч саад болохгүй. Хэрэглэгчийн тодорхойлсон функцийг (UDF) хоёр янзаар бичиж болно:
VBA код 1:
Энд бид эх мөрийн тэмдэгт бүрийг нэг нэгээр нь харна. нэг ба энэ нь тоон эсэхийг шалгана уу. Хэрэв тоо байвал уг тэмдэгт нь үүссэн мөрөнд нэмэгдэнэ.
Функц RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i) , 1)) Дараа нь sRes = sRes & AMP; Mid(str, i, 1) End If Next i RemoveText = sRes Төгсгөлийн функцVBA код 2:
Код нь ердийн илэрхийллийг боловсруулах объект үүсгэдэг. RegExp ашиглан бид 0-9 хүртэлх цифрээс бусад бүх тэмдэгтүүдийг эх мөрөөс устгадаг.
RemoveText(str As String ) функц нь CreateObject-тэй мөр хэлбэрээр ( "VBScript.RegExp" ) .Global = Үнэн .Загвар = "[^0-9]" RemoveText = .Replace(str, "" ) Төгсгөлийн функцээр төгсөхЖижиг ажлын хуудсан дээр хоёр код хоёулаа адилхан сайн ажиллах болно. Функцийг хэдэн зуун эсвэл хэдэн мянган удаа дууддаг том ажлын хуудсан дээр VBScript.RegExp ашигладаг код 2 илүү хурдан ажиллана.
Таны ажлын дэвтэрт код оруулах дэлгэрэнгүй алхмуудыг эндээс үзнэ үү: VBA-г хэрхэн оруулах талаар Excel дээрх код.
Та аль аргыг сонгохоос үл хамааран эцсийн хэрэглэгчийн үүднээс текстийг устгах, тоо үлдээх функц нь дараах байдалтай энгийн:
RemoveText(string)Жишээ нь: А2 нүднээс тоон бус тэмдэгтүүдийг устгавал B2 дахь томьёо нь:
=RemoveText(A2)
Үүнийг баганаас доош хуулж авахад л дараах үр дүн гарна:
Тайлбар. Үндсэн томьёо болон захиалгат функц хоёулаа тоон мөр гаргана. Үүнийг тоо болгохын тулд үр дүнг 1-ээр үржүүлэх эсвэл тэг нэмэх эсвэл VALUE функцэд томьёог боож өгнө. Жишээ нь:
=RemoveText(A2) + 0
=VALUE(RemoveText(A2))
Excel дээрх текстийн мөрөөс тоог хэрхэн устгах вэ
Энэ шийдэл нь Excel 365, Excel 2021, Excel дээр ажилладаг. 2019
Үсэг, тоон тэмдэгт мөрөөс тоог хасах томьёо нь өмнөх жишээнд дурдсантай бараг төстэй байна.
Excel 365 - 2019-д:
TEXTJOIN(" ", ҮНЭН, IF(ISERR(MID( нүд , ROW(ШУУД БУС)"1:"&LEN( нүд ) )), 1) *1), MID( нүд , ROW(ШУУД БУС("1:"&LEN( ) нүд ))), 1), ""))Excel 2019 дээр Ctrl + Shift + Enter товчийг хамт дарж массивын томьёо болгохоо санаарай.
Excel 365 болон 2021-д:
TEXTJOIN("", ҮНЭН, ХЭРЭГТЭЙ(ISERROR(MID( нүд , SEQUENCE(LEN( нүд 1) *1), MID ( нүд , SEQUENCE(LEN( нүд )), 1), ""))Жишээлбэл, A2 дахь мөрнөөс тоог хасахын тулд дараах томъёог хийнэ:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
Эсвэл
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
Үүний үр дүнд нүднээс бүх тоо хасагдаж, текстийн тэмдэгтүүд хадгалагдана:
Дээрх дэлгэцийн агшинд харуулсанчлан томьёо нь мөрийн аль ч байрлалаас тоон тэмдэгтүүдийг таслав: эхэнд, төгсгөлд, дунд хэсэгт. Гэсэн хэдий ч анхааруулга байна: хэрэв мөр тоо араас нь хоосон зай -аар эхэлдэг бөгөөд энэ нь хоосон зайг хадгалах бөгөөд энэ нь (B2-д байгаа шиг) хоосон зайны асуудал үүсгэдэг.
Текстийн өмнөх нэмэлт хоосон зайг арилгахын тулд , томъёог TRIM функцэд дараах байдлаар боож өгнө:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
Одоо таны үр дүн үнэхээр төгс байна!
Энэ томъёо хэрхэн ажилладаг вэ:
Үндсэндээ томьёо нь өмнөх жишээнд тайлбарласантай адил ажилладаг. Үүний ялгаа нь TEXTJOIN функц хүртэлх эцсийн массиваас эхлээд текст биш харин тоонуудыг хасах хэрэгтэй. Үүнийг хийхийн тулд бид IF болон ISERROR функцуудын хослолыг ашигладаг.
Таны санаж байгаагаарMID(…)+0 нь тоонуудын массив болон #VALUE үүсгэдэг! ижил байрлалд байгаа текст тэмдэгтүүдийг төлөөлөх алдаа:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
ISERROR функц нь алдааг олж, логик утгуудын массивыг 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"}
Энэхүү эцсийн массив нь TEXTJOIN руу дамждаг тул текстийн тэмдэгтүүдийг хооронд нь холбож, гаргана. үр дүн.
Текстээс тоо хасах тусгай функц
Шийдвэр нь Excel-ийн бүх хувилбарт ажиллана
Тодорхой томьёог хадгалах ёстой гэдгийг санаарай. энгийн, би ямар ч тоон тэмдэгтийг арилгахын тулд хэрэглэгчийн тодорхойлсон функцийн (UDF) кодыг хуваалцах болно.
VBA код 1:
Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) Хэрэв False = IsNumeric(Mid(str, i, 1)) Дараа нь sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes Төгсгөлийн функцVBA код 2:
Function RemoveNumbers(str As String ) CreateObject-тэй мөр хэлбэрээр ( "VBScript.RegExp") ) .Global = Үнэн .Загвар = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) Төгсгөл нь Төгсгөлийн функцээрRemoveText функцийн нэгэн адил хоёр дахь кодыг ашиглах нь дээр. томГүйцэтгэлийг оновчтой болгох ажлын хуудас.
Таны ажлын дэвтэрт код нэмсний дараа та энэхүү захиалгат функцийг ашиглан нүднээсээ бүх тоон тэмдэгтүүдийг устгаж болно:
RemoveNumbers(string)Манай тохиолдолд B2 дахь томьёо нь:
=RemoveNumbers(A2)
Хэрэв байгаа бол тэргүүлэгч зайг багасгахын тулд TRIM дотор тусгай функцийг үндсэн томьёотой адил байрлуулна уу:
=TRIM(RemoveNumbers(A2))
Тоо, бичвэрийг тусад нь багана болгон хуваах
Текст болон тоог хоёр багана болгон хуваахыг хүсч байгаа тохиолдолд нэг томьёогоор ажлыг гүйцэтгүүлэх нь сайхан байх болно. , зөвшөөрөх үү? Үүний тулд бид RemoveText ба RemoveNumbers функцуудын кодыг SplitTextNumbers эсвэл зүгээр л Split нэртэй нэг функц болгон нэгтгэдэг. та дуртай :)
VBA код 1:
Функц Хуваах Бичвэрийн тоо(str Мөр байдлаар , is_remove_text нь Boolean ) Мөр байдлаар Dim sNum, sText, sChar Мөр хэлбэрээр sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) Хэрэв үнэн = IsNumeric(sCurChar) бол sNum = sNum & sCurChar Өөр sText = sText & AMP; sCurChar Төгсгөл Хэрэв дараагийн бол i Хэрэв үнэн бол = is_remove_text Дараа нь SplitTextNumbers = sNum Өөр SplitTextNumbers = sText End Хэрэв төгсгөл ФункцVBA код 2:
Функц SplitTextNumbers(str As String , is_remove_re) String Asmovole CreateObject-тэй ( "VBScript.RegExp" ) .Global = Үнэн бол үнэн бол = is_remove_text Дараа нь .Загвар = "[^0-9]" Өөр.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End with End FunctionМанай шинэ захиалгат функцэд хоёр аргумент шаардлагатай:
SplitTextNumbers(string, is_remove_text)Хаана текстийг_арилгах нь ямар тэмдэгтүүдийг задлахыг заадаг логикийн утга юм:
- ҮНЭН эсвэл 1 - текстийг устгаж, тоог хадгална
- ХУДАЛ эсвэл 0 - тоог хасаж, текстийг хадгална
Манай жишээ өгөгдлийн багцын хувьд томьёо нь дараах хэлбэртэй байна:
Тоон бус тэмдэгтүүдийг арилгахын тулд:
=SplitTextNumbers(A2, TRUE)
Тоон тэмдэгтүүдийг устгах :
=SplitTextNumbers(A2, FALSE)
Зөвлөгөө. Хоосон зайтай холбоотой асуудлаас зайлсхийхийн тулд би TRIM функцэд тоог хасдаг томьёог байнга ороож байхыг зөвлөж байна:
=TRIM(SplitTextNumbers(A2, FALSE))
Тоо эсвэл текстийг устгах тусгай хэрэгсэл
Хийдэг хүмүүст Шаардлагагүй зүйлийг төвөгтэй болгох дургүй, би Excel-д текст эсвэл тоо устгах өөрсдийн арга замыг харуулах болно.
Манай Ultimate Suite-г таны Excel туузанд нэмсэн гэж үзвэл та дараах зүйлийг хийх болно:
- Ablebits Data табын Текст бүлгийн Устгах > Тэмдэгтүүдийг устгах гэснийг товшино уу.
Зөвлөгөө. Хэрэв үр дүн нь зарим тэргүүлэх зайг агуулж байвал Зайг тайрна уухэрэгсэл нь тэдгээрийг богино хугацаанд арилгах болно.
Excel дээрх мөрөөс текст эсвэл тоон тэмдэгтүүдийг ингэж устгах арга юм. Уншиж байгаад баярлалаа, ирэх долоо хоногт манай блог дээр уулзахыг тэсэн ядан хүлээж байна!
Боломжтой татан авалтууд
Excel дээрх текст эсвэл тоог устгах - жишээнүүд (.xlsm файл)
Ultimate Suite - туршилтын хувилбар (.exe файл)