Importregex Cryptotracker formula used to work, what happened? - google-sheets

I've been using this formula to track the prices of cryptocurrencies...
=IMPORTREGEX(F13,"<div(?=[^>]class=””priceValue___11gHJ .””)[^>]*>$(.+?)</div>”)")
The cell referenced here is for this site: https://coinmarketcap.com/currencies/pax-gold/?update=1626649033501
it had been working, but now it shows an error: SyntaxError: Invalid regular expression: /<div(?=[^>]class=””priceValue___11gHJ .””)[^>]*>$(.+?)</div>”)/: Unmatched ')' (line 109).
I don't know how to read this error, so I'm not sure how to fix it. Can you help?

try:
=REGEXEXTRACT(QUERY(IMPORTXML(
"https://coinmarketcap.com/currencies/pax-gold/?update=1626649033501",
"//*"), "select Col1 where Col1 contains '#context'", 0), "price..(\d+.\d+|\d+)")*1
update:
=IFERROR(IFERROR(REGEXEXTRACT(QUERY(IMPORTXML(F12,
"//*"), "select Col1 where Col1 contains '#context'", 0),
"price..(\d+.\d+.\d+|\d+.\d+|.\d+)")*1,
REGEXEXTRACT(QUERY(IMPORTXML(F12,
"//*"),
"select Col1 where Col1 contains 'relatedExchangePairsList' and Col1 starts with ' 1'"),
"\$ (\d+.\d+.\d+|\d+.\d+|.\d+) ")*1))

Related

Most ocuring chatacter in a cell

What's the formula to find which is the most frequent character in a cell in Google Sheets?
E.G. In cell N8 it says: "What's your name?". I'd like the formula to return "a", as it is the most frequent character in N8.
you can get the total distribution like this:
=QUERY(FLATTEN(REGEXEXTRACT(A1, REPT("(.)", LEN(A1)))),
"select Col1,count(Col1) group by Col1 order by count(Col1) desc label count(Col1)''")
notice that two empty spaces are counted as well
if you want to skip them use:
=QUERY(FLATTEN(REGEXEXTRACT(A1, REPT("(.)", LEN(A1)))),
"select Col1,count(Col1) where Col1 <> ' ' group by Col1
order by count(Col1) desc label count(Col1)''")
also, keep in mind that this is case-sensitive:
to make it case-insensitive use:
=QUERY(FLATTEN(REGEXEXTRACT(LOWER(A1), REPT("(.)", LEN(A1)))),
"select Col1,count(Col1) where Col1 <> ' ' group by Col1
order by count(Col1) desc label count(Col1)''")
so to get the top value only use:
=INDEX(QUERY(FLATTEN(REGEXEXTRACT(LOWER(A1), REPT("(.)", LEN(A1)))),
"select Col1,count(Col1) where Col1 <> ' ' group by Col1
order by count(Col1) desc label count(Col1)''"), 1, 1)
This should work:
=index(Sort(filter({LEN(substitute($A$1,mid($A$1,ROw(A:A),1),"")),mid($A$1,ROw(A:A),1)},Row(A:A)<= LEN(A1)),1,true),1,2)
I'm not sure what you'd expect for when there's a tie, but it would consistently return the character most used. If you wanted to skip spaces, you could do this...
=index(Sort(filter({LEN(substitute($A$1,mid(substitute($A$1,"
",""),ROw(A:A),1),"")),mid(substitute($A$1," ",""),ROw(A:A),1)},Row(A:A)
<= LEN(substitute(A1," ",""))),1,true),1,2)

How to count values if option checked is selected in one cell

I have a spreadsheet where users fill out a form, they have multiple options they can pick by clicking the checkboxes.
The responses sheets looks like this
I want to filter the results by option, so my main goal is to get the total amount of options selected:
I've been trying with COUNTIF but it's not working because I'm not selecting the specific response
=COUNTIF('Form Responses 1'!C2:F4,"*"&$B$1&"*")
I'm assuming I need to add a VLOOKUP but I'm not sure how to match it with the option
Here's a spreadsheet to play around with it
try:
=INDEX({QUERY(TRIM(SPLIT(FLATTEN(A2:A&"×"&SPLIT(B2:B, ",")), "×")),
"select Col1,count(Col1) where Col2 is not null group by Col1 pivot Col2 label Col1 'Person'");
{"Total", TRANSPOSE(MMULT(TRANSPOSE(QUERY(QUERY(TRIM(SPLIT(FLATTEN(A2:A&"×"&SPLIT(B2:B, ",")), "×")),
"select count(Col1) where Col2 is not null group by Col1 pivot Col2"), "offset 1", )*1),
SEQUENCE(COUNTUNIQUE(TRIM(FLATTEN(SPLIT(TEXTJOIN(",", 1, B2:B), ",")))), 1, 1, )))}})
Perhaps a formula like this:
=IFNA(QUERY({$A$2:$A$6, $B$2:$B$6}, "Select 1 where Col2 contains '"&B$9&"' and Col1 = '"&$A10&"' order by Col1 label 1 ''"), 0)
This outputs a 1 if the referenced cell contains the specified text, and a 0 otherwise. See the docs for the Query Function and the Query Language for more information.

Finding the top 3 values and returning the column ID

Thank you beforehand for your kind response.
Problem: I am trying to do a sheet to sort out the 3 top categories of a given range as shown by the attached screen grab.
enter image description here
I only managed to get the results by using the "large" command. "=large(range,n)". Using this I got the value but what I need is the column index/id rather than the numeric values.
Any ideas on how I would go about achieving this?
Thanks for your reply.
Try the following maybe:
Formula in G2:
=TRANSPOSE(QUERY(TRANSPOSE({A$1:E$1;A2:E2}),"Select Col1 Order by Col2 desc limit 3"))
It's definitely possible in arrayformula.
Using vlookup, a sequence of numbers for the search key:
=arrayformula(sequence(max(if(A:E<>"",row(A:A),))-1,columns(A:E)))
...and a range of columns that are sorted by each row of numbers:
=arrayformula({
sequence((max(if(A:E<>"",row(A:A),))-1)*columns(A1:E1)),
sort({
array_constrain(int((row(A2:A)-2)/(columns(A:E)))+1,(max(if(A:E<>"",row(A:A),))-1)*columns(A1:E1),1),
array_constrain(iferror(split(flatten(if(A2:E<>"",A1:E1&char(9999),)&A2:E),char(9999)),),(max(if(A:E<>"",row(A:A),))-1)*columns(A1:E1),2)
},1,1,3,0)
})
The final formula for the solution, in cell G2:
=arrayformula(
array_constrain(
vlookup(
sequence(max(if(A:E<>"",row(A:A),))-1,columns(A:E)),
{sequence((max(if(A:E<>"",row(A:A),))-1)*columns(A1:E1)),sort({array_constrain(int((row(A2:A)-2)/(columns(A:E)))+1,(max(if(A:E<>"",row(A:A),))-1)*columns(A1:E1),1),array_constrain(iferror(split(flatten(if(A2:E<>"",A1:E1&char(9999),)&A2:E),char(9999)),),(max(if(A:E<>"",row(A:A),))-1)*columns(A1:E1),2)},1,1,3,0)}
,3,0),
max(if(A:E<>"",row(A:A),))-1,3)
)
It will work with blank cells in some of the rows.
The width of the source data is determined by:
=columns(A1:E1)
and the height of the source 'numbers' by:
=max(if(A:E<>"",row(A:A),))-1 (it needs to sit within an arrayformula).
you may use this superior formula:
=ARRAYFORMULA(ARRAY_CONSTRAIN(IFERROR(SPLIT(FLATTEN(SPLIT(QUERY(FILTER(
QUERY(SPLIT(FLATTEN(IF(A2:E="",,ROW(A2:A)&"×"&A2:E&"×"&A1:E1)), "×"),
"select Col3 where Col2 is not null order by Col1,Col2 desc"), COUNTIFS(
QUERY(SPLIT(FLATTEN(IF(A2:E="",,ROW(A2:A)&"×"&A2:E&"×"&A1:E1)), "×"),
"select Col1 where Col2 is not null order by Col1,Col2 desc"),
QUERY(SPLIT(FLATTEN(IF(A2:E="",,ROW(A2:A)&"×"&A2:E&"×"&A1:E1)), "×"),
"select Col1 where Col2 is not null order by Col1,Col2 desc"),
SEQUENCE(COUNTA(A2:E), 1, ROW(A2)), "<="&SEQUENCE(COUNTA(A2:E), 1, ROW(A2)))<4)&
FLATTEN(IFERROR(SEQUENCE(MAX((A2:E<>"")*ROW(A2:A)), 3)*
{"a", "a", 0})),,9^9), 0)), " ")), 9^9, 3))

Problem with QUERY and IMPORTRANGE | Google Sheets

Why this function does not display results for one of the ranges? With no QUERY the results are displayed correctly.
QUERY({
IMPORTRANGE("url";"Sheet1!A1:B5");
IMPORTRANGE("url";"Sheet2!A1:B5");
IMPORTRANGE("url";"Sheet3!A1:B5")};
"SELECT Col1, WHERE Col1 IS NOT NULL")
try:
=ARRAYFORMULA(QUERY(TO_TEXT({
IMPORTRANGE("url"; "Sheet1!A1:B5");
IMPORTRANGE("url"; "Sheet2!A1:B5");
IMPORTRANGE("url"; "Sheet3!A1:B5")});
"select Col1 where Col1 is not null"; 0))

Query returning #VALUE

My query:
=Query(importrange(B5 ,"Sheet1!A1:G700"),"select Col3 WHERE Col4 = '"&Q145&"'",QUERY(importrange(B5 ,"Sheet1!A1:G700"),"select Col2 WHERE Col3 = '"&Q145&"'", 0))
is returning:
#VALUE! Query parameter 3 expects number values`. But W106 is a text and cannot be coerced to a number.
I have the cell format set to automatic, I've also tried setting it to plain text. Kind of lost, it works without the second query statement, unfortunately, this query is used on multiple sheets with a different number of columns so this is my attempt and making this query work with both formats.
it isn't clear what exactly you are after so try:
=QUERY({IFERROR(QUERY(IMPORTRANGE(B5, "Sheet1!A1:G700"),
"select Col3 where Col4 = '"&Q145&"'", 0),"");
IFERROR(QUERY(IMPORTRANGE(B5, "Sheet1!A1:G700"),
"select Col2 where Col3 = '"&Q145&"'", 0),"")},
"where Col1 is not null", 0)

Resources