2011-11-17 13:40:49 +0000 2011-11-17 13:40:49 +0000
22
22

Excel extraheer substring van string

Ik zoek een manier om een variabele lengte substring uit een string te halen.

Mijn cellen zullen er ongeveer zo uitzien:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Ik wil de string splitsen bij het teken -, zodat de cellen worden:

ABC
ABCDE
ABCD

Dit moet gedaan worden met een formule en niet met VBScript.

Ik gebruik Excel 2010

EDIT

Ik ontdekte dat de dataset niet altijd het - teken bevat, wat betekent dat er geen verandering zou moeten zijn.

Antwoorden (5)

26
26
26
2011-11-17 13:51:09 +0000

Dit probleem kan worden onderverdeeld in twee stappen:

  1. Zoek de index in de string van het gewenste splitteken (in dit geval, "-" of " - ").
  2. Zoek de prefix-subring vanaf het begin van de oorspronkelijke tekst tot de splitsingsindex.

De commando’s FIND en SEARCH zouden elk de index van een gegeven needle in een haystack teruggeven (FIND is hoofdlettergevoelig, SEARCH is hoofdletterongevoelig en staat jokertekens toe). Gegeven dat, hebben we:

FIND(search_text, source_cell, start_index)

of in dit geval:

FIND(" - ", A1, 1)

Zodra we de index hebben, hebben we het voorvoegsel van source_cell nodig om de “splitsing” uit te voeren. MID doet precies dat:

MID(source_cell, start_index, num_characters)

Als we ze samenvoegen, hebben we:

=MID(A1,1,FIND(" - ",A1,1))

met A1 als tekst van ABC - DEF geeft ABC.

7
7
7
2011-11-17 15:22:44 +0000

Uitbreidend op Andrew’s antwoord op basis van jouw bewerking: om de tekenreeks te vinden om te splitsen, gebruiken we de FIND functie. Als de FIND er niet in slaagt de gegeven tekenreeks te vinden, geeft hij een #VALUE? foutmelding. Dus moeten we deze waarde controleren en in plaats daarvan een vervangende waarde gebruiken.

Om te controleren op elke foutwaarde, inclusief #VALUE, gebruiken we de ISERROR functie, dus:

=ISERROR(FIND(" - ", A1, 1))

dat zal waar zijn als de FIND functie de “ - ” string niet kan vinden in de A1 cel. Dus gebruiken we dat om te beslissen welke waarde te gebruiken:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Dat betekent dat als het find commando een fout geeft, de ongewijzigde A1 cel moet worden gebruikt. Anders gebruikt u de functie MID die Andrew al heeft gegeven.

2
2
2
2014-08-11 08:59:14 +0000

Dank je wel @AndrewColeson voor je antwoord.

Dus even ter aanvulling, als je alles aan de rechterkant van de - wilt hebben, gebruik dan deze code:

=MID(A1,LEN(B1)+3,LEN(A1))

Dat is:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Deze code is geweldig voor als je een ongedefinieerd aantal karakters na de - hebt.

Bijvoorbeeld:

Als je hebt:

ABC - DEFG
AB - CDEFGH
...
1
1
1
2014-08-19 22:50:39 +0000

Hier is een zeer eenvoudige manier om het 5e teken van links uit een tekststring in Excel te halen:

Stel dat de tekenreeks ABCDEFGHIJ is opgeslagen in cel A1 in een Excel Spreadsheet, dan levert de volgende formule

=RIGHT(LEFT(A1,5),1)

het 5e teken van links in de tekenreeks op, namelijk E.

0
0
0
2017-05-02 10:15:45 +0000

De volgende formule zal een substring verwijderen uit [TEXTCOLUMN_1]

b.v.: als u -./thumb/hello.jpg wilt omzetten in thumb/hello.jpg dan gebruikt u de volgende formule

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1] = de kolomnaam die u wilt wijzigen[NUM_OF_CHARACTERS] = aantal karakters van de linkerkant die u wilt verwijderen

Als u van de rechterkant wilt verwijderen dan gebruikt u de volgende

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)