Enhavtabelo
Ĉi tiu lernilo instruos vin kiel apartigi tekston de nombroj en Excel uzante denaskajn formulojn kaj kutimajn funkciojn. Vi ankaŭ lernos kiel dividi tekston kaj nombrojn en du apartajn kolumnojn.
Imagu ĉi tion: vi ricevas krudajn datumojn por analizo kaj ekscias, ke nombroj estas miksitaj kun teksto en unu kolumno. En la plej multaj situacioj, certe estos pli oportune havi ilin en apartaj kolumnoj por pli detala ekzameno.
Se vi laboras kun homogenaj datumoj, vi verŝajne povus uzi la funkciojn LEFT, RIGHT kaj MID por ĉerpi la funkciojn. sama nombro da signoj de la sama pozicio. Sed tio estas ideala scenaro por laboratoriotestoj. En la reala vivo, vi plej verŝajne traktos malsimilajn datumojn kie nombroj venas antaŭ teksto, post teksto aŭ inter teksto. La subaj ekzemploj provizas solvojn ĝuste por ĉi tiu kazo.
Kiel forigi tekston kaj konservi nombrojn en Excel-ĉeloj
La solvo funkcias en Excel 365, Excel 2021 , kaj Excel 2019
Microsoft Excel 2019 enkondukis kelkajn novajn funkciojn, kiuj ne disponeblas en pli fruaj versioj, kaj ni uzos unu el tiaj funkcioj, nome TEXTJOIN, por forigi tekstajn signojn el ĉelo. enhavanta nombrojn.
La ĝenerala formulo estas:
TEXTJOIN("", VERA, IFERARO(MEZON( ĉelo, VICO(INDIREKTA( "1:"&LEN(<1)>ĉelo))), 1) *1, ""))En Excel 365 kaj 2021, ĉi tiu ankaŭ funkcios:
TEXTJOIN ("", TRUE,IFERARO(MEZON( ĉelo, SEQUENCE(LEN( ĉelo)), 1) *1, ""))Unuavide, la formuloj povas aspekti iom timigaj, sed ili funkcias :)
Ekzemple, por forigi tekston de nombroj en A2, enigu unu el la subaj formuloj en B2, kaj poste kopiu ĝin al tiom da ĉeloj kiom necesas.
En Excel 365 - 2019:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))
En Excel 2019, ĝi devas esti enigita kiel tabelformulo per Ctrl + Shift + Enigu . En dinamika tabelo Excel, ĝi funkcias kiel normala formulo kompletigita per la Enigu klavo.
En Excel 365 kaj 2021:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
Kiel rezulto, ĉiuj tekstaj signoj estas forigita de ĉelo kaj nombroj estas konservitaj:
Kiel funkcias ĉi tiu formulo:
Por pli bone kompreni la logikon, ni komencu esplori la formulo de interne:
Vi uzas aŭ ROW(INDIRECT("1:"&LEN(ĉeno))) aŭ SEQUENCE(LEN(ĉeno)) por krei sinsekvon nombrojn respondantajn al la tuta nombro de signoj en la fontoĉeno, kaj poste nutras tiujn sinsekvajn nombrojn al la MID-funkcio kiel la komencaj nombroj. En B2, ĉi tiu parto de la formulo aspektas jene:
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
La MID-funkcio ĉerpas ĉiun signon el A2 komencante per la plej unua kaj resendas ilin kiel tabelo:
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Ĉi tiu tabelo estas multobligita per 1. Nombraj valoroj pluvivas sen ŝanĝo, dum multiplikado de ne-nombra signo rezultigas #VALORO! eraro:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
La funkcio IFERROR pritraktasĉi tiujn erarojn kaj anstataŭigas ilin per malplenaj ĉenoj:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
Ĉi tiu fina tabelo estas servata al la funkcio TEXTJOIN, kiu kunligas la nemalplenajn valorojn en la tabelo ( ignore_empty argumento agordita al VERA) uzante malplenan ĉenon ("") por la limigilo:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
Konsilo. Por Excel 2016 - 2007, solvo ankaŭ ekzistas, sed la formulo estas multe pli kompleksa. Vi povas trovi ĝin en ĉi tiu lernilo: Kiel ĉerpi nombrojn en Excel.
Propra funkcio por forigi tekston de nombroj
La solvo funkcias por ĉiuj Excel-versioj
Se vi uzas pli malnovan version de Excel aŭ trovos la suprajn formulojn ankaŭ malfacile memorebla, nenio malhelpas vin krei vian propran funkcion kun pli simpla sintakso kaj uzant-amika nomo kiel Forigi Tekston . La uzant-difinita funkcio (UDF) povas esti skribita en du manieroj:
VBA-kodo 1:
Ĉi tie, ni rigardas ĉiun signon en la fontĉeno unu per unu kaj kontrolu ĉu ĝi estas nombra aŭ ne. Se nombro, la signo estas aldonita al la rezulta ĉeno.
Funkcio ForigiText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) Tiam sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End FunctionVBA-kodo 2:
La kodo kreas objekton por prilabori regulan esprimon. Uzante RegExp, ni forigas ĉiujn signojn krom ciferoj 0-9 el la fontĉeno.
Funkcio RemoveText (str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace (str, "" ) End With End FunctionSur malgrandaj laborfolioj, ambaŭ kodoj funkcios same bone. Sur grandaj laborfolioj, kie la funkcio nomiĝas centoj aŭ miloj da fojoj, kodo 2, kiu uzas VBScript.RegExp, funkcios pli rapide.
La detalaj paŝoj por enmeti la kodon en vian laborlibron troveblas ĉi tie: Kiel enmeti VBA. kodon en Excel.
Kiu ajn vi elektas, el la perspektivo de la finuzanto, la funkcio por forigi tekston kaj lasi nombrojn estas tiel simpla kiel ĉi tio:
ForigiText(string)Ekzemple por forigu ne-nombrajn signojn de la ĉelo A2, la formulo en B2 estas:
=RemoveText(A2)
Nur kopiu ĝin laŭ la kolumno, kaj vi ricevos ĉi tiun rezulton:
Notu. Kaj la denaskaj formuloj kaj kutima funkcio eligas ciferan ĉenon . Por turni ĝin en nombron, multigu la rezulton per 1, aŭ aldonu nulon, aŭ envolvu la formulon en la funkcio VALORO. Ekzemple:
=RemoveText(A2) + 0
=VALUE(RemoveText(A2))
Kiel forigi nombrojn de teksta ĉeno en Excel
La solvo funkcias en Excel 365, Excel 2021 kaj Excel 2019
La formuloj por forigi nombrojn el alfanombra ĉeno estas preskaŭ similaj al tiuj diskutitaj en la antaŭa ekzemplo.
Por Excel 365 - 2019:
TEXTJOIN(" ", VERA, SE (ISERR(MEZON( ĉelo , VICO(NEREKTA("1:"&LEN( ĉelo ) )), 1) *1), MEZ ( ĉelo , VICO(NEDIREKTA ("1:"&LEN( ĉelo ))), 1), ""))En Excel 2019, memoru fari ĝin tabelformulo premante la Ctrl + Shift + Enigu klavojn kune.
Por Excel 365 kaj 2021:
TEXTJOIN("", VERA, SE (ESTASERARO(MEZONO( ĉelo , SEQUENCE(LEN( ĉelo 1)) *1), MEZONO ( ĉelo , SEQUENCE(LEN( ĉelo )), 1), ""))Ekzemple, por forigi nombrojn de ĉeno en A2, la formulo estas:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
Aŭ
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
Kiel rezulto, ĉiuj nombroj estas forigitaj de ĉelo kaj tekstaj signoj estas konservitaj:
Kiel montrite en la supra ekrankopio, la formulo forprenas numerajn signojn de iu ajn pozicio en ĉeno: en la komenco, en la fino kaj en la mezo. Tamen, estas averto: se ĉeno komencas per numero sekvata de spaco , tiu spaco estas konservita, kio produktas problemon de gvidaj spacoj (kiel en B2).
Por forigi kromajn spacojn antaŭ teksto. , envolvu la formulon en la funkcio TRIM tiel:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
Nun, viaj rezultoj estas absolute perfektaj!
Kiel funkcias ĉi tiu formulo:
Esence, la formulo funkcias same kiel klarigite en la antaŭa ekzemplo. La diferenco estas, ke, de la fina tabelo servita ĝis la funkcio TEXTJOIN, vi devas forigi nombrojn, ne tekston. Por fari ĝin, ni uzas la kombinaĵon de funkcioj SE kaj ISERROR.
Kiel vi memoras,MED(…)+0 generas tabelon de nombroj kaj #VALORO! eraroj reprezentantaj tekstosignojn en la samaj pozicioj:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
La ISERROR-funkcio kaptas la erarojn kaj pasas la rezultan tabelon de Buleaj valoroj al IF:
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}
Kiam la IF-funkcio vidas VERA (eraro), ĝi enmetas la respondan tekston en la prilaboritan tabelon helpe de alia MID-funkcio. Kiam la funkcio SE vidas FALSE (nombro), ĝi anstataŭigas ĝin per malplena ĉeno:
{"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Ĉi tiu fina tabelo estas transdonita al TEXTJOIN, do ĝi kunligas la tekstajn signojn kaj eligas la rezulto.
Propra funkcio por forigi nombrojn el teksto
La solvo funkcias por ĉiuj Excel-versioj
Konsiderante, ke fortika formulo devas esti konservita. simpla, mi dividos la kodon de la uzant-difinita funkcio (UDF) por forigi ajnan numeran signon.
VBA-kodo 1:
Funkcio ForigiNumerojn(str As String ) Dim sRes As String sRes = "" For i = 1 To Len (str) If False = IsNumeric (Mid (str, i, 1)) Tiam sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End FunctionVBA-kodo 2:
Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End FunctionKiel estas la kazo de la funkcio RemoveText, la dua kodo estas pli bone esti uzata en grandalaborfolioj por optimumigi la agadon.
Post kiam la kodo estas aldonita al via laborlibro, vi povas forigi ĉiujn numerajn signojn de ĉelo uzante ĉi tiun kutiman funkcion:
RemoveNumbers(string)En nia kazo, la formulo en B2 estas:
=RemoveNumbers(A2)
Por eltondi gvidajn spacojn se ekzistas, nestu la kutiman funkcion en TRIM kiel vi farus en denaska formulo:
=TRIM(RemoveNumbers(A2))
Disigi nombrojn kaj tekston en apartajn kolumnojn
En situacio kiam vi volas apartigi tekston kaj nombrojn en du kolumnojn, estus bone fari la laboron per ununura formulo. , konsentas? Por tio, ni nur kunfandas la kodon de la funkcioj ForigiText kaj ForigiNumerojn en unu funkcion, nomatan SplitTextNumbers , aŭ simple Split , aŭ kion ajn vi ŝatas :)
VBA-kodo 1:
Funkcio 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) Tiam sNum = sNum & sCurChar Else sText = sTeksto & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End FunctionVBA-kodo 2:
Function SplitTextNumbers(str As String , is_remove_text As String) Kun CreateObject ( "VBScript.RegExp") .Global = True If True = is_remove_text Tiam .Pattern = "[^0-9]" Alie.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End FunctionNia nova kutima funkcio postulas du argumentojn:
SplitTextNumbers(string, is_remove_text)Kie is_remove_text estas Bulea valoro indikanta kiujn signojn forigi:
- VERA aŭ 1 - forigu tekston kaj konservu ciferojn
- FALSA aŭ 0 - forigu nombrojn kaj konservu tekston
Por nia ekzempla datumaro, la formuloj prenas ĉi tiun formon:
Por forigi ne-nombrajn signojn:
=SplitTextNumbers(A2, TRUE)
Por forigi numerajn signojn :
=SplitTextNumbers(A2, FALSE)
Konsileto. Por eviti eblan problemon de gvidaj spacoj, mi rekomendas ĉiam envolvi la formulon, kiu forigas nombrojn en la funkcio TRIM:
=TRIM(SplitTextNumbers(A2, FALSE))
Speciala ilo por forigi nombrojn aŭ tekstojn
Por tiuj, kiuj faras ne ŝatas kompliki aferojn nenecese, mi montros nian propran manieron forigi tekston aŭ nombrojn en Excel.
Supozinte, ke nia Ultimate Suite estas aldonita al via Excel-rubando, jen kion vi faras:
- En la langeto Ablebits Data , en la grupo Teksto , alklaku Forigi > Forigi signojn .
Konsileto. Se la rezultoj enhavas kelkajn gvidajn spacojn, la Trim Spacesilo forigos ilin en neniu tempo.
Jen kiel forigi tekstojn aŭ nombrajn signojn de ĉeno en Excel. Mi dankas vin pro legado kaj antaŭĝojas vidi vin en nia blogo venontsemajne!
Haveblaj elŝutoj
Forigi tekston aŭ ciferojn en Excel - ekzemploj (.xlsm-dosiero)
Ultimate Suite - provversio (.exe dosiero)