I was able to find a way to solve my problem (detailed [here](https://webapps.stackexchange.com/questions/60324/how-can-i-get-google-sheets-to-auto-update-a-reference-to-another-sheet)) using an Apps Script with a custom function. If you replace `=IMPORTRANGE(spreadsheet_url, range_string)` in your spreadsheet with `=DynamicImportRange(spreadsheet_url, sheet_name, range)` and paste the code below into Tools --> Script Editor --> Blank Project, it should work (see [this](https://developers.google.com/apps-script/overview) for more information on writing apps scripts). /** Usage: =DynamicImportRange(spreadsheet_url, sheet_name, range) Compare to: =IMPORTRANGE(spreadsheet_url, range_string) */ function DynamicImportRange(sheet_url, sheet_name, sheet_range) { var values = SpreadsheetApp.openByUrl(sheet_url).getSheetByName(sheet_name).getRange(sheet_range).getValues(); return values }; /** */ function RefreshSheet() { // Update the following two variables to suit your particular situation var sheet_name = "sheet1" var range = "A1" var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_name); var formula1 = "Loading..."; var formula2 = sheet.getRange("range").getFormula().toString().replace('"', '\"'); // Note that the following command will delete everything on the sheet. // If you do not want to do this, you may need to get creative // with how you specify what gets deleted. You could potentially split // out the last argument of "formula2" to find the range that needs cleared. sheet.clear(); sheet.getRange("range").setValue(formula1); Utilities.sleep(245); sheet.getRange("range").setValue(formula2); }; If you want the sheet to be updated on a regular basis, you can set up a trigger by going to Resources --> Current project's triggers in the Apps Script window.