in column B I have a string divided by the "|" delimiter. One and only one of the parts inside each "|" contains the word "Above".
In the example I shared the part inside "|" that contains the word "Above" is string5, because there are 4 "|" before it + 2 "|" after it.
meaning:
I want a formula to get the answer string5
Would love to get your help.
Here the solution, credit to #JvdVL:
=TRIM(MID(SUBSTITUTE([#[Image URL]],"|",REPT(" ",LEN([#[Image URL]]))),(LEN(LEFT([#[Image Caption]],FIND("Above",[#[Image Caption]])-1))-LEN(SUBSTITUTE(LEFT([#[Image Caption]],FIND("Above",[#[Image Caption]])-1),"|","")))*LEN([#[Image URL]])+1,LEN([#[Image URL]])))
Related
I am trying to bring together several cells and they have a specific length so if I have
A1 needs to be 5 chars and the value is 'cat'
B1 needs to be 6 chars and the value is 'dog'
Concatenated it would be:
[space space]cat[space space space]dog
or
" cat dog"
I'm having trouble finding a function or set of functions that allows this, most want to trim out leading or trailing spaces.
Yes:
=CONCATENATE(RIGHT(REPT(" ",5)&A1,5),RIGHT(REPT(" ",6)&A2,6))
or as #BigBen stated use & instead of Concatenate:
=RIGHT(REPT(" ",5)&A1,5)&RIGHT(REPT(" ",6)&A2,6)
I am trying to solve this problem -
If suppose I have text like this in a single column on Excel
#22-atr$$1 AM**01-May-2015&&
$21-atr#10-Jan-2007*6 PM&
&&56-atr#11 PM$$8-Jan-2016*
**4 PM#68-atr#21-Mar-2022&&
and I want to write functions to have separate columns as follows
Can someone help me do that please?
I am trying to solve this problem and the only thing that I was able to arrive to is extracting Month by using =MID(A1,FIND("-",A1)+1,3)
One option for formulae would be using new functions, currently available in the BETA-channel for insiders:
Formula in B1:
=LET(A,TEXTSPLIT(A1,{"#","$","&","*","#"},,1),B,SORTBY(A,IFERROR(MATCH(RIGHT(A),{"r","M"},0),3)),C,HSTACK(TAKE(B,,2),TEXTSPLIT(TEXT(--INDEX(B,3),"YYYY-Mmm-D"),"-")),IFERROR(--C,C))
The idea is to:
Use LET() throughout to store variables;
TEXTSPLIT() the value in column A using all available delimiters into columns and skip empty values in the resulting array;
Then SORTBY() the rightmost character of the resulting three elements using MATCH(). The IFERROR() will catch the data-string;
We can than HSTACK() the 1st and 2nd column with the result of splitting the 3rd element after we formatted to YYYY-MMM-D first;
Finally, the resulting array can be multiplied by a double unary. If not, we replace it with original content from the previous variable.
Notes:
I formatted column C to hold time-value in AM/PM.
I changed the text to hold dutch month-names to have Excel recognize the dates for demonstration purposes. Should work the same with English names.
For fun an UDF using regular expressions:
Public Function GetPart(inp As String, prt As Long) As Variant
Dim Pat As String
Select Case prt
Case 0
Pat = "(\d+-atr)"
Case 1
Pat = "(\d+\s*[AP]M)"
Case 2
Pat = "-(\d{4})"
Case 3
Pat = "-(\w+)-"
Case 4
Pat = "(\d+)-\w+-"
Case Else
Pat = ""
End Select
With CreateObject("vbscript.regexp")
.Pattern = ".*" & Pat & ".*"
GetPart = .Replace(inp, "$1")
End With
End Function
Invoke through =GetPart(0,A1). Choices ares 0-4 and in order of your column-headers.
You can achieve what you wish by applying a few simple transformations.
Replace the #,$,* and & with a common character that is guaranteed not to appear in the data sections (e.g. #)
Replace all occurrences of 2 or more runs of the # character with a single #
Trim the # from the start and end of the string
Split the string into an array using # as the split character (vba.split)
use For Each to loop over the array
In the loop have a set of three tests
Test 1 tests the string for the ocurrence of "-atr"
Test 2 tests the string for the occurence of "-XXX-" where XXX is a three letter month - You then split the date at the - to give an array with Day/Month/Year
Test 3 Tests if the string has ' AM' or ' PM'
How to find a word with space (eg: i want to find a word "X1 X2 X3"). I am using the following code
put the text of field "f4" into xx
find xx in field "f1"
In LiveCode, the space character delimits words -- a single word doesn't contain spaces. If there's only one instance of the string of characters you're searching for, you could use the offset function:
put "X1 X2 X3" into theString
put the text of fld "f4" into temp
put offset(theString,temp) into theNum
The variable theNum will contain the number of characters before the first character of the string, or will contain 0 if the string is not found in the field's text.
I'm writing a macro in Excel that is reading some text from a single cell.
ProductID = rw.Cells(1, 1).Text
However the cell may contain some buffer characters, specifically 5 consecutive space characters. I am trying to remove all the characters (length and actual text may vary) after the 5 spaces (including the spaces).
So if the string was:
MyProduct123 removethis
The desired string would be
MyProduct123
It seems I can remove the 5 spaces with
Replace(MyProductStr, " ", "")
but how can I get the position of the right side string or the text to remove that?
You can do this using InStr to find the starting position of the five spaces, and then Left to take just the part of the string before that:
Dim pos As Integer
pos = InStr(ProductID, " ")
If pos > 0 Then
ProductID = Left(ProductID, pos - 1)
End If
I have a set of data that shown below on excel.
R/V(208,0,32) YR/V(255,156,0) Y/V(255,217,0)
R/S(184,28,16) YR/S(216,128,0) Y/S(209,171,0)
R/B(255,88,80) YR/B(255,168,40) Y/B(255,216,40)
And I want to separate the data in each cell look like this.
R/V 208 0 32
R/S 184 28 16
R/B 255 88 80
what is the function in excel that I can use for this case.
Thank you in advance.
kennytm doesn't provide an example so here's how you do substrings:
=MID(text, start_num, char_num)
Let's say cell A1 is Hello.
=MID(A1, 2, 3)
Would return
ell
Because it says to start at character 2, e, and to return 3 characters.
In Excel, the substring function is called MID function, and indexOf is called FIND for case-sensitive location and SEARCH function for non-case-sensitive location. For the first portion of your text parsing the LEFT function may also be useful.
See all the text functions here: Text Functions (reference).
Full worksheet function reference lists available at:
Excel functions (by category)
Excel functions (alphabetical)
Another way you can do this is by using the substitute function. Substitute "(", ")" and "," with spaces.
e.g.
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "(", " "), ")", " "), ",", " ")
I believe we can start from basic to achieve desired result.
For example, I had a situation to extract data after "/". The given excel field had a value of 2rko6xyda14gdl7/VEERABABU%20MATCHA%20IN131621.jpg . I simply wanted to extract the text from "I5" cell after slash symbol. So firstly I want to find where "/" symbol is (FIND("/",I5). This gives me the position of "/". Then I should know the length of text, which i can get by LEN(I5).so total length minus the position of "/" . which is LEN(I5)-(FIND("/",I5)) . This will first find the "/" position and then get me the total text that needs to be extracted.
The RIGHT function is RIGHT(I5,12) will simply extract all the values of last 12 digits starting from right most character. So I will replace the above function "LEN(I5)-(FIND("/",I5))" for 12 number in the RIGHT function to get me dynamically the number of characters I need to extract in any given cell and my solution is presented as given below
The approach was
=RIGHT(I5,LEN(I5)-(FIND("/",I5))) will give me out as VEERABABU%20MATCHA%20IN131621.jpg . I think I am clear.
Update on 11/30/2022
With new excel functions, you can use the following in cell C1 for the input in A1:
=TEXTJOIN(" ",,TEXTSPLIT(A1,{"(",",",")"}))
Here is the output:
What about using Replace all?
Just replace All on bracket to space.
And comma to space. And I think you can achieve it.