Hoppa till huvudinnehåll

Hur extraherar jag första bokstaven i varje ord från cellen?

Föreställ dig att du har en lista med landsnamn i ditt kalkylblad och du vill extrahera den första bokstaven i varje ord i dessa namn. Excel tillhandahåller inte en direkt funktion för att extrahera de första bokstäverna i varje ord i en cell. Jag kommer dock att introducera några praktiska metoder för att effektivt utföra denna uppgift, vilket gör processen enkel och effektiv.


Extrahera första bokstaven i varje ord från cell med formel

För att få den första bokstaven i varje ord i en cell kan följande matrisformel hjälpa dig.

1. Kopiera följande formel till en tom cell där du vill få resultatet och tryck sedan på Ctrl + Skift + Enter för att få det första resultatet.

=CONCAT(LEFT(FILTERXML("<a><b>"&SUBSTITUTE(A2," ","</b><b>")&"</b></a>","//b"),1))

2. Dra sedan formeln nedåt för att fylla de andra cellerna. Denna åtgärd extraherar automatiskt den första bokstaven i varje ord i varje cell på en gång. Se skärmdump:

Förklaring av denna formel:
  • ERSÄTTNING(A2," "," "):Denna funktion ersätter varje blanksteg i texten i cell A2 med . Detta separerar effektivt varje ord i texten med dessa XML-taggar. Till exempel, om A2 innehåller "Hello World", förvandlar den här delen av formeln den till "Hello World".
  • " "&...&" ": Denna del lindar resultatet av SUBSTITUTE-funktionen med i början och slutet. För att fortsätta med exemplet blir strängen nu Hello World och bildar en giltig XML-struktur där varje ord är inneslutet i taggar.
  • FILTERXML(...,"//b"): FILTERXML används för att analysera XML-strängen som skapades i de föregående stegen. XPath-frågan //b väljer alla element i taggarna, dvs varje ord i den ursprungliga strängen. Med vårt exempel skulle FILTERXML returnera en array med två element: "Hello" och "World".
  • VÄNSTER(...,1): Funktionen LEFT appliceras sedan på varje element i arrayen som returneras av FILTERXML, och extraherar den första bokstaven i varje ord. I exemplet skulle detta resultera i "H" och "W".
  • CONCAT(...): Slutligen sammanfogar CONCAT-funktionen alla element i arrayen till en enda sträng. För vårt "Hello World"-exempel skulle det sammanfoga "H" och "W" för att producera "HW".

Extrahera första bokstaven i varje ord från Cell med Kutools AI Aide

Extrahera snabbt den första bokstaven i varje ord i en cell med Kutools AI Aide. Inget behov av komplexa formler; AI-assistenten automatiserar uppgiften åt dig, vilket gör databehandlingen enkel och effektiv. Effektivisera ditt Excel-arbetsflöde och gör ditt arbete enklare. Prova Kutools AI Aide och upplev smarta Excel-operationer!

Anmärkningar: För att använda detta Kutools AI Aide of Kutools för ExcelBer ladda ner och installera Kutools för Excel först.

När du har installerat Kutools för Excel, klicka Kutools AI > AI-assistent att öppna Kutools AI Aide ruta:

  1. Välj datalistan, skriv sedan ditt krav i chattrutan och klicka Skicka knappen eller tryck på ange nyckel för att skicka frågan;
  2. Efter att ha analyserat, klicka Utförande knappen för att köra. Kutools AI Aide kommer att behandla din förfrågan med AI och returnera resultaten direkt i Excel.


Extrahera första bokstaven i varje ord från Cell med användardefinierad funktion

Att extrahera den första bokstaven i varje ord från en cell är en uppgift som kan optimeras mycket genom att använda en användardefinierad funktion (UDF) i Excel. Det här avsnittet utforskar hur du skapar och använder en UDF för att effektivt utföra denna uppgift.

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic for Applications-fönstret.

2. Klicka Insert > Modulernaoch klistra in följande kod i Modulfönster.

Function GetFirstLetters(rng As Range) As String
'Updateby Extendoffice
    Dim arr
    Dim I As Long
    arr = VBA.Split(rng, " ")
    If IsArray(arr) Then
        For I = LBound(arr) To UBound(arr)
            GetFirstLetters = GetFirstLetters & Left(arr(I), 1)
        Next I
    Else
        GetFirstLetters = Left(arr, 1)
    End If
End Function

3. Spara och stäng sedan den här koden, gå tillbaka till kalkylbladet och ange den här formeln = GetFirstLetters (A2) i en tom cell. Och dra sedan fyllningshandtaget till de celler som du vill använda den här formeln. Och alla de första bokstäverna har extraherats från serien av ord, se skärmdump:


Relaterade artiklar:

  • Extrahera de första eller sista två eller n orden från textsträngen
  • Om du har en lista med textsträngar som är åtskilda av mellanslag och nu vill du extrahera de första eller sista tre eller n orden från cellvärdet för att få följande skärmdumpresultat. Den här artikeln kommer jag att introducera några formler för att extrahera första eller sista två eller n ord från textsträng i Excel.
  • Extrahera e-postadress från textsträng
  • När du importerar några e-postadresser från Webbplats till Excel-kalkylblad innehåller det alltid irrelevant text, men nu vill du bara extrahera de rena e-postadresserna från textsträngen (se följande skärmdumpar). Hur kunde du snabbt bara få e-postadresserna från celltexten?
  • Extrahera sträng mellan två olika tecken
  • Om du har en lista med strängar i Excel som du behöver extrahera en del av strängen mellan två tecken från nedanstående skärmdump, hur hanterar du det så snabbt som möjligt? Här introducerar jag några metoder för att lösa detta jobb.

Bästa kontorsproduktivitetsverktyg

🤖 Kutools AI Aide: Revolutionera dataanalys baserat på: Intelligent utförande   |  Generera kod  |  Skapa anpassade formler  |  Analysera data och generera diagram  |  Anropa Kutools funktioner.
Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50+ Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid.  Klicka här för att få den funktion du behöver mest...

Beskrivning


Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
Comments (18)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hello, If the the nth Word is enclosed in a (), it is returning the ( since it comes before the First Letter.

Example:
Word Word (Word)

How to return WWW instead of WW( ?
This comment was minimized by the moderator on the site
Hello, Sharmane
Maybe the following code can help you:
Function GetFirstLetters(rng As Range) As String
    Dim arr() As String
    Dim i As Long
    
    arr = VBA.Split(rng.Value, " ")
    
    For i = LBound(arr) To UBound(arr)
        If Left(arr(i), 1) <> "(" And Right(arr(i), 1) <> ")" Then
            GetFirstLetters = GetFirstLetters & Left(arr(i), 1)
        ElseIf Left(arr(i), 1) = "(" And Right(arr(i), 1) = ")" Then
            GetFirstLetters = GetFirstLetters & Mid(arr(i), 2, 1)
        End If
    Next i
End Function


Please have a try, thank you!
This comment was minimized by the moderator on the site
Another suggestion if using Microsoft 365: =TEXTJOIN("",,LEFT(TEXTSPLIT(D9," "),1)) where the source string is in B9.
Wrap in UPPER function to enforce uppercase: =UPPER(TEXTJOIN("",,LEFT(TEXTSPLIT(D9," "),1)))
@Pradeep Gyawali -> add space: =UPPER(TEXTJOIN(" ",,LEFT(TEXTSPLIT(D9," "),1)))
This comment was minimized by the moderator on the site
Wondering how to add this into the existing formula I have that works to bring the value over from a cell in another sheet? I only want to bring over the first character in each cell. Here's the formula

=IF(LOOKUP(2,1/(OriginalSubmission!D:D<>""),ROW(OriginalSubmission!D:D))=ROW(OriginalSubmission!D4),"",INDIRECT("OriginalSubmission!D5:"&"D"&(LOOKUP(2,1/(OriginalSubmission!D:D<>""),ROW(OriginalSubmission!D:D)))))
This comment was minimized by the moderator on the site
Hello, SARAH
Do you mean extracting each first character in cells from another worksheet? If so, you just need to copy and paste the code in this article, and then apply this formula into another sheet.
=GetFirstLetters(OriginalSubmission!D4)


Note: OriginalSubmission is the sheet name that you want to extract charatcers from.
Please try, hope it can help you!
This comment was minimized by the moderator on the site
How to create space between the letters?

South Korea= S K
This comment was minimized by the moderator on the site
Hi, Gyawali
If you want to add space for each character, please apply the following VBA code:
Function GetFirstLetters(Rng As Range) As String
'Updateby Extendoffice
    Dim xStr
    Dim arr
    Dim I As Long
    xStr = " "
    arr = VBA.Split(Rng, " ")
    If IsArray(arr) Then
        For I = LBound(arr) To UBound(arr)
            GetFirstLetters = GetFirstLetters & Left(arr(I), 1) & xStr
        Next I
    Else
        GetFirstLetters = Left(arr, 1) & xStr
    End If
End Function


After insert the code, and then apply this formula: =GetFirstLetters(A2) to get the result you need.
Please try, hope it can help you!
This comment was minimized by the moderator on the site
Why is this giving me the first 2 letters in each word?
This comment was minimized by the moderator on the site
This is awesome. Such a time saver
This comment was minimized by the moderator on the site
This code is good for upto five words, where D20 is the cell with data.



=IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",
$D$20)+1)+1)+1)+1,1)),IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)),
IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)),
IF(ISERR(LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)),
IF(ISERR(LEFT($D$20,1)),"",LEFT($D$20,1)),LEFT($D$20,1)
&MID($D$20,SEARCH(" ",$D$20)+1,1)),LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)),
LEFT($D$20,1)&MID($D$20,SEARCH(" ",$D$20)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)),LEFT($D$20,1)
&MID($D$20,SEARCH(" ",$D$20)+1,1)&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)+1)+1,1)
&MID($D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20,SEARCH(" ",$D$20)+1)
+1)+1)+1,1))
This comment was minimized by the moderator on the site
Подскажите пожалуйста, можно ли модифицировать код чтобы забиралась не первые а Заглавные буквы?
This comment was minimized by the moderator on the site
i think it has one bug, it's automatically removed from module when sheet is closed, need to again every time when open sheet same process to be required, please advice how to save this formula in excel permanently.
This comment was minimized by the moderator on the site
Pls save excel as Excel Macro-Enablel work book.
This comment was minimized by the moderator on the site
Please include this part: If you create a function called DISCOUNT in a workbook called Personal.xlsb and you call that function from another workbook, you must type =personal.xlsb!discount(), not simply =discount(). https://support.office.com/en-us/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations