Forum Discussion
mwild
4 years agoFrequent Visitor
String Extract based on criteria
I have a table and one column contains free text. I'm looking to add a column which will search the free text and extract anything which has a letter followed by 5 numbers. For example - the bel...
- 4 years ago
mwild ***Made a tweak to the code***
The following works. I will let you tweak the code further if you need to so I am not doing all your homework 😂
StringMatch = VAR NoBlankFreeText = SUBSTITUTE ( 'Sample Data'[FreeText], " ", "", 1 ) VAR UpperD = FIND ( "D", NoBlankFreeText, 1, BLANK () ) VAR LowerD = FIND ( "d", NoBlankFreeText, 1, BLANK () ) VAR PositionD = IF ( ISNUMBER ( UpperD ), UpperD, LowerD) VAR CheckNumbers = ISERROR ( ISNUMBER ( VALUE ( MID ( NoBlankFreeText, PositionD + 1, 5 ) ) ) ) RETURN IF ( NOT ( CheckNumbers ), MID ( NoBlankFreeText, PositionD, 6), "No Match" )
moizsherwani
4 years agoContinued Contributor
I am not sure how this will work when the end goal is "any letter followed by any numbers" when the letter and the numbers could be anything, e.g. it can be "Z 98765" or "b34561" or worse "!@#@!D48202@#!@".
mwild
4 years agoFrequent Visitor
The letter will always be "D" or "d"
There may be a space (or may not be) and then 5 numbers between 0 and 9
- moizsherwani4 years agoContinued Contributor
mwild ***Made a tweak to the code***
The following works. I will let you tweak the code further if you need to so I am not doing all your homework 😂
StringMatch = VAR NoBlankFreeText = SUBSTITUTE ( 'Sample Data'[FreeText], " ", "", 1 ) VAR UpperD = FIND ( "D", NoBlankFreeText, 1, BLANK () ) VAR LowerD = FIND ( "d", NoBlankFreeText, 1, BLANK () ) VAR PositionD = IF ( ISNUMBER ( UpperD ), UpperD, LowerD) VAR CheckNumbers = ISERROR ( ISNUMBER ( VALUE ( MID ( NoBlankFreeText, PositionD + 1, 5 ) ) ) ) RETURN IF ( NOT ( CheckNumbers ), MID ( NoBlankFreeText, PositionD, 6), "No Match" )