I need to data validate a column so that it only allow:
A-Å, a-å, 0-9, Comma, dot, ?, !, -, +, (, ), :, <, >
I use this custom formula:
=REGEXMATCH(A1:1,"[^a-zA-Z0-9\s]")
But I cannot get the dialog box to save the formula?
and how do I get my regex to match my allowed characters?
Only if I exclude the = from the formula field but then the data validate does not work...
https://docs.google.com/spreadsheets/d/1_MeBbhL1nR1rF1JYGI2cpd88VAhqKJCgN25KS6STfWU/edit?usp=sharing
use:
=REGEXMATCH(A1&""; "[a-zA-Z0-9\sÅå,\.\!\?\-\+\(\)\:<>]")
It seems that your formula is correct but you just needs to correct the cell reference.
=REGEXMATCH(A1,"[^a-zA-Z0-9\s]")
Sample
Related
I have one column with comma separeted strings and a several with words that can be in these strings. I have to find if a a word from a column name is in a string. I used a regexmatch formula, but it doesn't distinguisch TV from TV remote. How can I fix this?
Mu formula:
arrayformula(if(L1<>"";if(REGEXMATCH($K$2:$K;L$1)=TRUE;"Wybrano";"");""))
My data
Or if it will be simplier I have to count how many times the certain word occured in the column with strings.
Can you try:
=MAKEARRAY(ROWS(K2:INDEX(K2:K;ROW(LOOKUP("ZZZ";K:K))));COUNTA(L1:1);LAMBDA(r;c;IF(LEN(INDEX(K2:K;r));IF(REGEXMATCH(INDEX(K2:K;r);INDEX(L1:1;;c)&"(?:,|$)");"Wybrano";);)))
Adjust the column range here COUNTA(L1:1) to something like COUNTA(L1:P1) or so depending on your dataset.
try:
=IFNA(BYCOL(L1:P1, LAMBDA(y, BYROW(K2:K, LAMBDA(x,
IF(MATCH("*"&y&"*", x, ), "Wybrano"))))))
I have one issue with REGEXEXTRACT in Google Sheet. I want to match and extract the exact word. If I use the below formula, it will display the result “Sing,” but I want it to display “NA.” Because the source cell i.e A1 cell does not have the “Sing” word but it has the word "Singapore".
=regexextract(A1,”(?i)Sing”)
So, how can we extract the exact match instead of the partial match?
Thanks & Regards,
Vineet
REGEXEXTRACT is going to extract the part of the string that matches your regex expression. What you need to use is REGEXMATCH which returns a TRUE or FALSE and use it as a condition for IF:
=IF(REGEXMATCH(A1,(?i)Sing”), A1,"")
use:
=IF(REGEXMATCH(A1; "\b(?i)sing\b"); A1; "NA")
(?i) case insensitive
\b boundary
I want to cut out substrings from this url XYZ.com/de/haus/dach/ and put the values each in its own columns in Google Spreadsheet.
With this url example:
Column A should be "de"
Column B should be "haus"
Column C should be "dach"
How can I do that?
Remove the characters before the first /. This can be done in a number of ways, including REGEXREPLACE or through a combination of RIGHT, LEN and FIND.
SPLIT the resulting string.
=SPLIT(RIGHT(A1,(LEN(A1)-(FIND("/",A1)))),"/")
Ideally what I'm looking for is to get the dollar amount extracted no matter the format.
Sheet link:
https://docs.google.com/spreadsheets/d/1drTPlnQmVTsbUXwJDfQr7DnHjSbnGx-fLthad6KxfM8/edit?usp=sharing
Delete everything from Column B, including the header. Then place the following formula in cell B1:
=ArrayFormula({"Header"; IF(A2:A="",,VALUE(IFERROR(REGEXEXTRACT(A2:A,"\$(\d+\.?\d*)"))))})
You may change the header text within the formula as you like.
If a cell in A2:A is blank, the corresponding cell in B2:B will be left blank as well.
Otherwise REGEXEXTRACT will look for a pattern that begins with a literal dollar sign. The parenthesis within the quotes denote the beginning and end of a capture group (i.e., what will be returned if found) following that literal dollar sign. The pattern \d+\.?\d* means "a group of one or more digits, followed by zero or one literal period symbols, followed by zero or more digits."
IFERROR will cause null to be rendered instead of an error if such a pattern is not able to be extracted.
VALUE will convert the extracted string (or null) to a real number.
If you would prefer that null be returned instead of 0 where no pattern match is found, you can use the following variation of the formula instead:
=ArrayFormula({"Header"; IFERROR(VALUE(IFERROR(REGEXEXTRACT(A2:A,"\$(\d+\.?\d*)"),"x")))})
If your strings may include numbers with comma separators, use the following versions of the above two formulas, respectively:
=ArrayFormula({"Header V1"; IF(A2:A="",,VALUE(IFERROR(REGEXEXTRACT(SUBSTITUTE(A2:A,",",""),"\$(\d+\.?\d*)"))))})
=ArrayFormula({"Header V2"; IFERROR(VALUE(IFERROR(REGEXEXTRACT(SUBSTITUTE(A2:A,",",""),"\$(\d+\.?\d*)"),"x")))})
try:
=INDEX(IFNA(REGEXEXTRACT(A2:A, "\$(\d+.\d+|\d+)")*1))
Sample
Code:
=ArrayFormula((VLOOKUP(QUERY(UNIQUE(RANDBETWEEN(ROW(INDIRECT("A1:A"&COUNTA(A:A)*10))^0;COUNTA(A:A)));"limit 4");{ROW(INDIRECT("A1:A"&COUNTA(A:A)));FILTER(A:A;A:A<>"")};2;0)))
I'm trying but got this error,
test 1
Can anyone tell what's wrong? To make my code
to work as in the first picture
error in #REF!
VLOOKUP evaluates outside the range bounds.
im try change code
=ArrayFormula((VLOOKUP(QUERY(UNIQUE(RANDBETWEEN(ROW(INDIRECT("A1:A"&COUNTA(A:A)*10))^0,COUNTA(A:A))),"limit 4"),{ROW(INDIRECT("A1:A"&COUNTA(A:A)));FILTER(A:A,A:A<>"")},1,0)))
but number
solution for that?
=ARRAYFORMULA(VLOOKUP(FLOOR(RANDARRAY(5)*COUNTA(A2:A)),{SEQUENCE(COUNTA(A2:A),1,0),A2:INDEX(A2:A,COUNTA(A2:A))},2))
Create 5 random integers using RANDARRAY between 0(inclusive) and number of entries in A2:A(i.e., COUNTA)(exclusive).
Create a artificial side by side array({arr1,arr2}) of SEQUENCE of numbers (from 0) and actual values in A2:A
VLOOKUP the random integers in the created artificial array to give random values in A:A
If you're in locales that use comma as decimal separators, The artificial array should be created using \ instead of ,({arr1\arr2}).
=ARRAYFORMULA(VLOOKUP(FLOOR(RANDARRAY(5)*COUNTA(A2:A));{SEQUENCE(COUNTA(A2:A);1;0)\A2:INDEX(A2:A;COUNTA(A2:A))};2))
On the first formula
{ROW(INDIRECT("A1:A"&COUNTA(A:A)));FILTER(A:A;A:A<>"")}
replace the semicolon ; between INDIRECT() and FILTER() by a backslash \ as using a semicolon appends the results of FILTER to the results of INDIRECT but you are looking to put the results of each function on their own column. Please note that this formula is using semicolons as argument separator.
On the second formula replace the semicolon ; between INDIRECT() and FILTER() by a comma , (and replace the third argument of VLOOKUP, 1, by 2. Please note that this formula is using commas as argument separators.
Explanation
Commas are used as argument separator on spreadsheets that use dot as decimal separator (=SUM(1,2,3)) but also use commas as columns separator on arrays ({"a","b"})
Semicolons are used as argument separator on spreadsheets that use comma as decimal separator (=SUM(1;2;3)). On these spreadsheets, backslashes are used as columns separator on arrays ({"a"\"b"});
References
Using arrays in Google Sheets