I have the following 2 google sheets
TEST 1
https://docs.google.com/spreadsheets/d/1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg/edit?usp=sharing
TEST 2
https://docs.google.com/spreadsheets/d/15PAI8nnTzp1wQuvvkHxZ81kkeRrqHrvUH1vXiF9tya0/edit?usp=sharing
In Test 2 in cells B36,B37 and C36,C37 I am trying to grab information from TEST 1 to TEST 2
I have checked and checked and triple checked but I am not sure why it is not grabbing the information over.
Previously I had used "-" and "( )" in the table names so I decided to remove all of those and use only letters but it is still not working.
I also noticed that it was grabbing from the correct column (in my original google sheet), column D but it was grabbing the wrong information.
But I checked the name I was using to match "Room BS Harvest" and made sure it matched in both google sheets but still was not able to get it to work.
I have turned on show formula so you can see that I have formulas in Test 2 B36,B37,C36,C37
If you have any idea why it is not working please do let me know. I can't figure out why it is not getting the data over.
I myself would not approach things the way you are doing in this sheet. (I always recommend using a separate sheet within your destination spreadsheet where IMPORTRANGE brings in all of the data from the source location, and then using that single sheet in the destination spreadsheet as the reference for all other formulas, such as the ones you're trying to use.)
In addition, your sheets are inaccessible (i.e., "Comment only"). So neither I nor anyone else would be able to setup an alternative method for you to consider.
That said, and working with what you do have, here is how you might adjust the B36 formula...
Here is the formula you originally wrote (and which is not working):
=INDEX(importrange("https://docs.google.com/spreadsheets/d/1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg/edit#gid=0",$J$1&"!A4:H26"),MATCH($A36,index(importrange("https://docs.google.com/spreadsheets/d/1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg/edit#gid=0",$J$1&"!A4:A26"))),match($J$2,index(importrange("https://docs.google.com/spreadsheets/d/1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg/edit#gid=0",$J$1&"!A4:H4"))))
Here is my edit to that formula structure (which should work):
=INDEX(IMPORTRANGE("1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg",$J$1&"!A4:H26"),MATCH($A36,IMPORTRANGE("1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg",$J$1&"!A4:A26"),0),MATCH($J$2,index(IMPORTRANGE("1mAssNMTGXcMcuYhjDWq6lNfWOdgUfI6FbGSWushGAMg",$J$1&"!A4:H4")),0))
Notice that you only need the spreadsheets ID number for IMPORTRANGE, not the entire URL. This just makes reading such formulas easier.
You also had mismatched sets of parentheses. This was your biggest issue.
And I recommend using the third parameter of MATCH to indicate what kind of match you're looking for. (Here, I assigned 0, which means "exact match only.")
Hopefully, you can use that as a model for editing your other formulas.
I have a fairly simple table, which looks like the following:
I want to get a specific value from that table. For that I am using two different formulas:
=iferror(DGET(Bazaar!$A:$K;"Top Sell-Offer";{"Item";"ENCHANTED_COAL"});"?") ==> returns "?"; Should get some numbers
=iferror(DGET(Bazaar!$A:$K;"Top Sell-Offer";{"Item";"ENCHANTED_OBSIDIAN"});"?") ==> returns "2747" as expected
I also tried =index(filter(Bazaar!$B:$K;Bazaar!$A:$A="ENCHANTED_COAL");;1)
which does return what I expected, but I can't specify the column I want by header.
Note that both strings for conditions and column headers are copy-pasted and thus character-perfect (As you can also see in the results.)
Also note that this does not happen with the truncated table provided, please refer to this sheet.
Why do I get such inconsistent results and what can I do about that?
Thanks in advance! Stay healthy!
I made a copy of your sheet and messed around with it. Finally, I decided to remove the IFERROR part and I got the error of "More than one match found in DGET evaluation.". The error was the key.
The formula is seeing "ENCHANTED_COAL_BLOCK" as another match for "ENCHANTED_COAL". Once I removed "COAL" from coal block, the formula worked as it should.
In order to get it to stop seeing double (to find an exact match), simply add an equal sign in front of the word you are looking for:
=IFERROR(DGET(Bazaar!$A:$K,"Top Sell-Offer",{"Item";"=ENCHANTED_COAL"}),"?")
=IFERROR(DGET(Bazaar!$A:$K,C$3,{$A$3;"="&$A5}),"?")
I recommend adding the equal sign in front of all words you search for just for consistency purposes.
Reference: https://infoinspired.com/google-docs/spreadsheet/exact-match-in-database-functions-in-google-sheets/
I have a Google Form set up, and anybody can submit a response an unlimited number of times. (It has to be this way. I can't make people log in.)
The issue is that there's a spammer who's using some website or bot to submit thousands of spam responses. I've tried using the captcha add-on from xfanatical (which adds a question that makes them fill out a particular code, which changes every minute), but the spammer figured out how to get past that.
One thing I've noticed, though, is that each spam submission is exactly 100 words. So one way I can think of to solve this is to have a sheet that returns all rows from the "Responses" sheet except for the rows where the submission is exactly 100 words.
Edit: I've also noticed that all the submissions start with a space, so that could be used too.
Let's say that your Responses 1 sheet has the answers in columns A, B, C, D, E etc. all the way to column Z
Let us now suppose that it is column C that holds the answers that start with a space.
Follow these steps:
Please create another tab and name it Clean.
Place the following formula in another cell A1
=QUERY('Clean'!A1:Z,"select * where not C matches '\s.*'")
Enjoy a spam free answer sheet :)
As mentioned by the OP, one can also use
=QUERY('Responses 1'!A1:Z,"select * where not C starts with ' '")
Functions used:
QUERY
It should be simple, but it's not working. It seems like the same question as Google Spreadsheet, Count IF contains a string but it still doesn't work. And the semicolon mentioned in the responses of that question just gets eaten, so I'm guessing that's an old format.
Basically I have a column of years (it's not designated as a date column) and I want to return total decade counts. I put:
=COUNTIF(A1:A100, "200?")
I thought that would return a count value for everything from 2000-2009, but it just returns zero. If I remove the wildcard and make it one specific year, I do get a count for that year, so it's the wildcard that's the problem. I've tried "?" and "*" and neither work. What am I doing wrong here? Everything I've read says, including the Google COUNTIF documentation says this should work.
Screenshot of my spreadsheet formula
What am I doing wrong here?
You are misreading the documentation.
The documentation as referenced mentions wildcards only in the context If range contains text to check against,.
Number formats can however be changed to Text "on the fly" (ie within a formula), such as suggested by #TheMaster, or a different approach taken suited to the format, as in a Comment.
This problem has been persistent for a while, just happens every so often at random times, nothing changing. I also do not know how to reproduce the problem, but I'll give a detailed explanation of what's happening.
Normally the importRange function works just fine, and looks something like the following:
The Spreadsheet key is typed correctly - I've been using this strategy in Google Spreadsheets for a while now.
Every so often, Google Spreadsheets seems to break down, or at least the importRange function does... and produces something like the following:
Google seemed to be freezing up at times today, which is when this happened. I've tried adjusting the importRange parameters to !X1:X, !X2:X5, changing the title of the Sheet that is being imported, etc.
In the past, changing from !X:X to !X1:X fixed some columns, but not always all of them. The only fool-proof solution to fixing this, that I have found, is recreating both spreadsheets. As the back-end (the one being imported) eventually becomes a report, I would like to spare my boss the extra effort of referencing multiple spreadsheets, and would rather just fix this and be done with it.
Does anyone know the potential cause of this glitch? Sometimes it fixes itself, sometimes it doesn't. It happens randomly, and only to certain spreadsheets (I have a set of 8 or so that all use importRange, and no more than 2 are ever affected at the same time). So I honestly have no clue where this is coming from.
Side note: Google in general has been a bit unresponsive today in terms of all its services - my university's App Engine email service was down for about half an hour. Could a limitation on resources/network attackers be causing this kind of behavior in Spreadsheets?
Update: I attempted to import to the same Spreadsheet data from a different Spreadsheet (i.e., gave the importRange function a different Spreadsheet key). Though the key and range are valid if imported into a different Spreadsheet, in my original (the one full of #REF!), that range is not imported correctly. This leads me to believe that this glitch may apply only to a single Spreadsheet, where any attempt to importRange from any other source is not functional.
This is a little late, but I came across it in a search so it might help someone else - try something like this:
=IFERROR(ImportRange(SpreadSheet_GUID,"Bookings!P:P"),
IFERROR(ImportRange(SpreadSheet_GUID,"Bookings!P:p"),
IFERROR(ImportRange(SpreadSheet_GUID,"Bookings!p:P"),
ImportRange(SpreadSheet_GUID,"Bookings!p:p"))))
Basically the idea is to force Google to recalc using variations of the original address (upper/lower case column letters).
The problems with the IMPORTRANGE() function has been somewhat of an ongoing issue. There have been several bugs over the years and it is up to Google to find a stable solution so it works as designed.
Until then, this might help you:
Instead of editing the cell, creating a new spreadsheet, or doing anything else to have the sheet reattempt the function (almost like playing lottery), you can force Google sheets to reattempt the function automatically when it fails to load:
Wrap the IMPORTRANGE() function that is causing problems with an IFERROR() function. That way, the sheet attempts the import, and only if it fails, it attempts it again. The function can be nested to attempt several times in a row.
You can add named ranges to your source data (right-click-source>define-named-range) to facilitate. For instance, you can create 3 different named ranges for the "J:J" range. Call them "J", "Ja", and "Jay", then you call on your IFERROR() function in the sheet you want to import to:
=IFERROR( IMPORTRANGE( "SheetID","J" ), IFERROR( IMPORTRANGE( "SheetID","Ja" ), IFERROR( IMPORTRANGE( "SheetID","Jay" ), IFERROR( IMPORTRANGE( "SheetID", "'TabName'!J:J" ), IFERROR( IMPORTRANGE( "SheetID", "'TabName'!j:j" )))))
This formula will attempt your import and deliver it if it succeeds, and if not reattempts a total of 5 times in a row automatically, which doesn't guarantee you will succeed, but if you have a 50% chance of success with your imports, nesting 5 in a row should give you a 96% chance, which is a lot better. My personal experience has been that it hasn't failed since I've done the IFERROR() nest.
Hope it helps.
I had similar issues, and were resolved by NOT using public links to spreadsheets.
I have noticed that links are different for public sharing and those coppied from address bar while sheet si opened.
Also i have noticed some difficulties while opening shared spreadsheets from my other Google accounts. I had to re-allow access for some spreadsheets that i was importing.
Sorry for my english.
This happens, indeed, in my case simply Ctrl+X, waiting for a second, and then pasting the formula back makes the Sheets engine re-do the import and then it succeeds to import.
In case you can not do this procedure manually, you should use Tim's solution.
I found this solution, work fine for me:
In both spreadsheets insert an =now() equation in a random cell, say Z1
In both spreadsheets insert an =importrange() function that references the now function of the other spreadsheet.
Go into your spreadsheet settings and choose to recalculate every minute.
I tried a lot of other suggestions including using the =now() function, the now URL trick in this thread, or Apps Script to insert random text on a set interval, but nothing would force importrange to update except a manual edit of the source sheet.
https://webapps.stackexchange.com/questions/60324/how-can-i-get-google-sheets-to-auto-update-a-reference-to-another-sheet
I had the same issue, and found a solution!
Please reduce the source file's size
To reduce, split it up and again have the import-range referenced
You now will be able to see the imported range!
If you think the above isn't the situation, the chances might be
Your cell is occupied so remove all formatting and clear all the cells before importing the range.
Still not working? Let God help you out!
I tried adding :
if(ISERROR(importrange...
and it works.
It doesn't mean the error disappears, but when it happens, you just need to reload the sheet and wait for while and let it update itself.
It is much more practical than manually changing the big letter to small letter.
Here's the easy work-around I've found for this bug:
I do a Find-and-Replace ("search within formulas") for "=" wherever I have the importrange error (=REF!) (or just for the whole sheet) and I replace-all with a "#" in order to make it all be text rather than formula. Then I do another Find-and-Replace over the same area and replace-all the "#" with "=" again. This consistently fixes the issue.
I was able to fix the =REF! error using the Edit > Find and Replace > Find "=" Replace with "#" > Search Selected Range > Also search within formulas > Find > Done. The error corrected without actually initiating the Replace command.
just to share with you how I resolve this error.
Upon checking on my formulas, I have a Circular Reference, which made me encounter this ImportRange internal Error. When I clean my formulas to remove those circular references, it worked again. :)
I had the same problem and solved it by using
=IF(ISERROR(A1);IMPORTRANGE();IMPORTRANGE())
in the cell where earlier IMPORTRANGE used to be and by turning on Iterative calculation in spreadsheet’s location & calculation settings.
Hope it help someone