Ошибка не удалось найти диапазон или лист для импорта

Всем привет, меня зовут Артем Медведев, я представляю компанию Helpexcel.pro. Мы занимаемся созданием управленческих таблиц и умеем их интегрировать с другими приложениями.

Всем привет, меня зовут Артем Медведев, я представляю компанию Helpexcel.pro. Мы занимаемся созданием управленческих таблиц и умеем их интегрировать с другими приложениями.

На самом деле очень много задач, связанных с управленческими отчетами можно решить без программирования. Мы периодически публикуем материалы о том, как самостоятельно создать управленческий учет в Гугл таблицах. Делюсь тут ссылкой на соответствующий раздел сайта. Там пошаговая инструкция с разбором формул.

Кейс:
У каждого сотрудника своя таблица, где записываются учетные операции. Нужно сделать так, что бы в одной таблице собиралась информация из таблиц сотрудников в один сводный отчет.

Прикрепляю небольшой видеообзор итогового решения, что бы было понятней о чем речь)

Обзор кейса

Вот ссылка на папку с таблицами, которые будет описаны далее.

Рассмотрим ситуацию, когда с целью разграничения прав у каждого сотрудника своя таблица, где фиксируются учетные операции.

Вид таблицы сотрудника

И есть таблица руководителя, содержащая форму отчета.

Вид таблицы руководителя

Усложним задачу тем, что представление данных в таблице руководителя задается взаимосвязанными выпадающими списками и диапазонами дат.

Настройка представления отчета

Шаг 1

Для начала нужно сделать так, что бы данные, которые водятся в таблицы сотрудников появлялись в таблице руководителя.

Для этого создаем в таблице руководителя ровно столько листов, сколько таблиц сотрудников. Данные будем подтягивать формулой IMPORTRANGE()

Посмотрите короткий обзор применения формулы в данной ситуации.

IMPORTRANGE

В таблице «Отчетность» на листе «Данные» поставьте курсор в ячейку D3 и пропишите там формулу по аналогии с видеозаписью.

Подробнее о формуле:

=IMPORTRANGE(«Ссылка на таблицу»; «Диапазон, который нужно отобразить из этой таблицы»)

Обязательно заключайте аргументы в кавычки!

Пример функции:

=importrange(«https://docs.google.com/spreadsheets/d/14GIMUMieJBNiUGFEcukx0q0VwhdjzzQ_6R_JSWXbzNs/edit #gid=0″;»Данные!b:g»)

Для самопроверки воспользуйтесь готовой формулой

Шаг 2

В шаге 1 мы сделали так, что бы при обновлении данных в таблицах сотрудников, в таблице руководителя отображались все изменения.

Теперь нужно сделать так, что бы отчет заполнялся актуальными данными из таблиц сотрудников.

Для этого хорошо подходить формула СУММЕСЛИМН()

Подробнее о формуле:

=СУММЕСЛИМН(диапазон суммирования;диапазон критерия 1; критерий 1; диапазон критерия 2; критерий 2;…)

И эту формулу нужно приписать относительно каждой таблицы.

Вид формулы в ячейке отчета:

= СУММЕСЛИМН1+СУММЕСЛИМН2+СУММЕСЛИМН3…СУММЕСЛИМНN

Про формулу СУММЕСЛИМН и про то как ее использовать для разных вычислений напишу статью немного позже.

А пока прикрепляю запись вебинара, где мы очень подробно разбираем IMPORTRANGE, СУММЕСЛИМН, ЕСЛИ, FILTER для создания модели отчета.

Если хотите получить записи курса по Гугл таблицам, то можно посмотреть информацию на этой страничке.

Google Spreadsheet.
I dynamically remove old sheet and I create (I use sheet.copyTo() function) a new sheet with the same name, but IMPORTRANGE formula can’t find (periodically) new Sheets.

=ImportRange("ssId", "Data!A1:B1")

This script works fine but other Spreadsheets which fetch data from this Spreadsheet by IMPORTRANGE formula periodically can’t find new (generated) sheets:

=QUERY(IFERROR(IMPORTRANGE("ssId", "Data!A:AU")),"SELECT * ", 0)

This formula doesn’t return anything!

function copySpreadSheet(sourceId, targetId) {
try {
var sourceSS = SpreadsheetApp.openById(sourceId);
SpreadsheetApp.setActiveSpreadsheet(sourceSS);
var sourceSheets = sourceSS.getSheets();

var targetSS = SpreadsheetApp.openById(targetId);
SpreadsheetApp.setActiveSpreadsheet(targetSS);
var targetSheets = targetSS.getSheets();

//you can't delete all sheets!
var timestamp = new Date().getTime();
var tempName = "TEMPORARY-FOR-DELETE-" + timestamp;
targetSS.insertSheet(tempName);    

for(var i = 0; i < targetSheets.length; i++) {
  targetSS.deleteSheet(targetSheets[i]);
}

var sourceCharts = [];
var newSheetCharts = [];
var newSheet = null;
var newSheetName = "";
for(var i = 0; i < sourceSheets.length; i++) {
  newSheet = sourceSheets[i].copyTo(targetSS)
  newSheetName = newSheet.getName().replace("Copy of ", "");
  newSheet.setName(newSheetName);

  /*
  newSheetCharts = newSheet.getCharts();

  sourceCharts = sourceSheets[i].getCharts();
  for(var j = 0; j < sourceCharts.length; j++) {

   /* Server Error:
   var chart = newSheetCharts[j].modify()
    .setChartType(sourceCharts[j].getType())
    .addRange(sourceCharts[j].getRange())
    .build();
   newSheet.updateChart(chart);
   */

    //insertImage(blob, column, row, offsetX, offsetY)

    /*
    newSheet.insertImage(
      sourceCharts[j].getBlob(),
      sourceCharts[j].getContainerInfo().getAnchorColumn(),
      sourceCharts[j].getContainerInfo().getAnchorRow(),
      sourceCharts[j].getContainerInfo().getOffsetX(),
      sourceCharts[j].getContainerInfo().getOffsetY()
    );
    */
 /* } */

}

targetSS.deleteSheet(targetSS.getSheetByName(tempName)); //remove a temporary sheet  

//Adding Date Stamp:
targetSS.insertSheet("Last time updated").hideSheet().getRange(1, 1).setValue(new Date());

SpreadsheetApp.flush();
Utilities.sleep(500); 

return targetSS;

} catch (err) {
  Logger.log(err.toString());
 }
}

I tried to «cheat» the Spreadsheet:

var querySheet = dataSourceSS.getSheetByName("Query");
querySheet.activate();
Logger.log(formula);
querySheet.getRange(2, 1).setFormula("=Minute(Now())"); //any FORMULA 
Utilities.sleep(1000);
querySheet.getRange(2, 1).setFormula(formula);

It still doesn’t work!
enter image description here

Google Spreadsheet.
I dynamically remove old sheet and I create (I use sheet.copyTo() function) a new sheet with the same name, but IMPORTRANGE formula can’t find (periodically) new Sheets.

=ImportRange("ssId", "Data!A1:B1")

This script works fine but other Spreadsheets which fetch data from this Spreadsheet by IMPORTRANGE formula periodically can’t find new (generated) sheets:

=QUERY(IFERROR(IMPORTRANGE("ssId", "Data!A:AU")),"SELECT * ", 0)

This formula doesn’t return anything!

function copySpreadSheet(sourceId, targetId) {
try {
var sourceSS = SpreadsheetApp.openById(sourceId);
SpreadsheetApp.setActiveSpreadsheet(sourceSS);
var sourceSheets = sourceSS.getSheets();

var targetSS = SpreadsheetApp.openById(targetId);
SpreadsheetApp.setActiveSpreadsheet(targetSS);
var targetSheets = targetSS.getSheets();

//you can't delete all sheets!
var timestamp = new Date().getTime();
var tempName = "TEMPORARY-FOR-DELETE-" + timestamp;
targetSS.insertSheet(tempName);    

for(var i = 0; i < targetSheets.length; i++) {
  targetSS.deleteSheet(targetSheets[i]);
}

var sourceCharts = [];
var newSheetCharts = [];
var newSheet = null;
var newSheetName = "";
for(var i = 0; i < sourceSheets.length; i++) {
  newSheet = sourceSheets[i].copyTo(targetSS)
  newSheetName = newSheet.getName().replace("Copy of ", "");
  newSheet.setName(newSheetName);

  /*
  newSheetCharts = newSheet.getCharts();

  sourceCharts = sourceSheets[i].getCharts();
  for(var j = 0; j < sourceCharts.length; j++) {

   /* Server Error:
   var chart = newSheetCharts[j].modify()
    .setChartType(sourceCharts[j].getType())
    .addRange(sourceCharts[j].getRange())
    .build();
   newSheet.updateChart(chart);
   */

    //insertImage(blob, column, row, offsetX, offsetY)

    /*
    newSheet.insertImage(
      sourceCharts[j].getBlob(),
      sourceCharts[j].getContainerInfo().getAnchorColumn(),
      sourceCharts[j].getContainerInfo().getAnchorRow(),
      sourceCharts[j].getContainerInfo().getOffsetX(),
      sourceCharts[j].getContainerInfo().getOffsetY()
    );
    */
 /* } */

}

targetSS.deleteSheet(targetSS.getSheetByName(tempName)); //remove a temporary sheet  

//Adding Date Stamp:
targetSS.insertSheet("Last time updated").hideSheet().getRange(1, 1).setValue(new Date());

SpreadsheetApp.flush();
Utilities.sleep(500); 

return targetSS;

} catch (err) {
  Logger.log(err.toString());
 }
}

I tried to «cheat» the Spreadsheet:

var querySheet = dataSourceSS.getSheetByName("Query");
querySheet.activate();
Logger.log(formula);
querySheet.getRange(2, 1).setFormula("=Minute(Now())"); //any FORMULA 
Utilities.sleep(1000);
querySheet.getRange(2, 1).setFormula(formula);

It still doesn’t work!
enter image description here

Google Sheet IMPORTRANGE Ошибка «Внутренняя ошибка диапазона импорта», когда диапазон представляет собой просто столбец

«Внутренняя ошибка диапазона импорта».

=IMPORTRANGE(«https://docs.google.com/spreadsheets/d/1-bCoiKLjBlM5IGRo9wrdm», «sheet1!B:C») , работает.

Это ошибка? до сих пор это был третий раз, когда мне приходилось менять их много раз? Есть ли какое-нибудь последовательное решение для этого? Я использую это решение временно

5 ответов

Это не могло быть решением проблемы. Я построил целую платформу интеграции данных на листах и ​​сильно полагаюсь на функциональность importrange для защиты доступа к источникам данных от пользователей. Теперь в последнее время #REF начал преследовать мои столы повсюду, и он делает все более или менее непригодным для использования.

Однозначно это ошибка или нехватка ресурсов.

Я думаю, что лучшим решением здесь будет использовать

Я не верю, что уклонение от кеша Google — это исправление или даже обходной путь.

Мы поддерживаем лист с функцией importrange на нескольких вкладках в течение многих лет, и только в течение последней недели возникла проблема.

Мы впервые заметили это в пятницу, а сегодня снова вернулись. В обоих случаях я не думаю, что сделал что-либо, чтобы исправить проблему, особенно сегодня. Я переместил формулу по листу, что привело к обновлению функции importrange, но это все равно привело к «внутренней ошибке диапазона импорта». Функция importrange отключилась на время (я не знаю, сколько сегодня, но я думаю, что это было не менее 15 минут), а затем разрешилась на всех вкладках без изменений.

Я думаю, что это определенно ошибка или Google возится с вещами на сервере. Может, нам нужно найти способ сделать все без использования importrange?

Эти ошибки обычно временные и проходят через несколько часов. Чтобы ускорить это, немного измените формулу импорта, заменив «sheet1!B:B» на «sheet1!B:b» — изменения регистра строчных букв достаточно, чтобы позволить вызову утилизировать кеш Google и получить свежие результаты, что должно позволить вам обойти проблему. .

В дополнение к двойному ответу вы также должны ограничить свой диапазон, чтобы не было большого количества мертвых строк. Так что что-то вроде B:B5000 вместо B:B .

у нас есть несколько листов, которые полагаются на importrange для получения данных из других листов Google, начиная с этой недели у нас возникли проблемы с загрузкой некоторых из них, мы просто получаем внутреннюю ошибку #ref import range.

Я пробовал множество решений, но все они, похоже, работают только временно, после чего при обновлении запроса иногда удается получить данные, размер диапазона не является проблемой, поскольку проблема возникает как при большом импорте, так и при импорте. которые получают только 1 ячейку.

пока лучшее решение, которое у меня есть, это удалить = из формулы, а затем добавить его обратно, чтобы снова загрузить данные, однако это длится всего около 30 минут, прежде чем importrange возвращается к той же ошибке.

в формулах нет ничего необычного

Я пробовал варианты заглавных букв для диапазонов, а также добавлял, если ошибка, чтобы попытаться загрузить вариант формулы

но, похоже, ничего не работает, а когда работает, решение не прилипает.

будем очень признательны за любую помощь или понимание того, что может быть причиной этой проблемы.

Как обойти ошибку IMPORTRANGE: «Результаты слишком велики»?

Я пытаюсь IMPORTRANGE из диапазона, содержащего 240 000 ячеек (40 столбцов и 6000 строк). Функция IMPORTRANGE ошибочна: «Результаты слишком велики». Я не могу найти документацию о ограничениях функции.

Каковы ограничения IMPORTRANGE?

Как мне обойти это, чтобы я мог импортировать эти данные в свой листок?

4 ответа

У меня тоже была аналогичная проблема.

Попробуйте разделить диапазон импорта с помощью формулы массива.

Протестируйте это с помощью разных размеров данных, чтобы получить самую короткую версию, и вы можете делать то, что вам нужно.

Пустые клетки могут иметь значение. Мы наблюдали нарушение импорта в ячейках 23573×11 или 259k, типичный рост составлял около 10 рядов ежедневно, поэтому мы некоторое время находились в ячейках более 250 тысяч. Один столбец в основном пустой, у пары других есть несколько пробелов.

Я не мог заставить ARRAYFORMULA разобрать, как показано выше, или с другими догадками, поэтому я использовал это на своей скрытой вкладке «Ingest».

=importrange(«sheet», «A1:K10000») в ячейке A1
=importrange(«sheet», «A10001:K») в ячейке A10001

В моей рабочей /презентационной вкладке используется

, чтобы обеспечить постоянное форматирование, наши исходные листы перезаписываются ежедневно.

Используя ответ Сэма и документацию для чтения, я нашел способ получить результат BIG DATA без ошибок. Для этого вам нужно сделать шаг за шагом. В одном запросе. Например, если вам нужно экспортировать данные sheet!A3:X100000 .

Попробуйте сделать следующее: сначала сделайте запрос и выберите только

после получения результата просто отредактируйте запрос из

после получения данных снова отредактировать запрос

и продолжайте, пока вы не будете богаты

таким образом я мог бы импортировать около 800 000 ячеек с данными. Для моей задачи этого было достаточно, но я думаю, что если мне нужны более длинные данные результата, я мог бы продолжить, и он будет работать.

Вы также должны помнить, что таблицы Google имеют ограничение на один максимум документа, может содержать только 2 миллиона ячеек.

Из моего опыта использования IMPORTRANGE количество ячеек не было причиной вообще, но в любое время, когда я превысил 36 столбцов, это не получилось. Мои результаты могут составлять 600 строк или 6000 строк, если я не превысил 36 столбцов. По иронии судьбы вы можете обойти это, объединив функции IMPORTRANGE.

Обратите внимание на фигурные скобки , используемые до и после двух функций IMPORTRANGE

Импортирует диапазон ячеек из одной электронной таблицы в другую.

Пример использования

IMPORTRANGE("https://docs.google.com/spreadsheets/d/abcd123abcd123", "лист1!A1:C10")

IMPORTRANGE(A2,"B2")

Синтаксис

IMPORTRANGE(url_таблицы, диапазон)

  • url_таблицы – URL таблицы, из которой импортируются данные.

    • Значение url_таблицы должно быть текстом, заключенным в кавычки, или ссылкой на ячейку, в которой содержится таблица.
  • диапазон – строка в формате "[название_листа!]диапазон" (например, "Лист1!A2:B6" или "A2:B6"). Этот параметр указывает на диапазон, который нужно импортировать.

    • Компонент название_листа в параметре диапазон не является обязательным. По умолчанию IMPORTRANGE импортирует данные из заданного диапазона первого листа.

    • Значение параметра диапазон должно быть текстом, заключенным в кавычки, или ссылкой на ячейку, которая содержит необходимую информацию.

Технические сведения и рекомендации

Если изменить исходный документ, функция IMPORTRANGE обеспечит обновление всех открытых принимающих документов. При этом на экране появится полоса зеленого цвета. Кроме того, функция IMPORTRANGE возвращает результаты в принимающий документ только после того, как в исходном документе будут завершены все расчеты, даже если в указанном диапазоне никаких расчетов нет.

Рекомендации

  • Не используйте слишком много принимающих листов: каждый из них должен получать данные с исходного листа.
  • Измените структуру и размер результата перед использованием функции IMPORTRANGE, особенно при импорте из часто обновляемой таблицы.
    • Допустим, вам необходимо посчитать сумму для 1 миллиона строк, импортированных из другой таблицы. Быстрее рассчитать сумму в исходной таблице, а затем использовать функцию IMPORTRANGE, чтобы импортировать результат, чем использовать функцию IMPORTRANGE для непосредственного импорта 1 миллиона строк данных и подсчета результата в конечной таблице. Этот метод позволяет сжать и объединить данные до импорта с помощью функции IMPORTRANGE.

Функция IMPORTRANGE позволяет обновлять данные на других листах, если они привязаны к исходному. Если на листе Б содержится функция IMPORTRANGE(лист А), а на листе В – функция IMPORTRANGE(лист Б), то при внесении изменений в данные на листе А будут также обновлены листы Б и В. Любые изменения на листе А приведут к перезагрузке листов Б и В.

Рекомендации

  • Ограничивайте количество последовательно связанных функцией IMPORTRANGE листов.
  • Старайтесь не применять циклы в функции IMPORTRANGE. Например, цикл возникнет, если вы используете функцию IMPORTRANGE в нескольких таблицах, ссылающихся друг на друга: таблица A использует функцию IMPORTRANGE для получения данных из таблицы Б, а таблица Б использует функцию IMPORTRANGE для получения данных из таблицы А. Это приводит к тому, что таблицы зацикливаются, постоянно пытаются получить друг от друга данные, но никогда не выдают результат.
  • Изменения, внесенные на исходном листе, могут появиться на принимающем листе не сразу. Если функция IMPORTRANGE используется много раз в нескольких связанных документах, то от момента внесения изменений на исходном листе до появления результатов на принимающем листе может пройти немало времени.

Функция IMPORTRANGE выполняется при первом открытии документа или если документ был открыт не более 5 минут назад. Как и в случае с цепочкой обновлений, функция IMPORTRANGE вынуждена обращаться к каждому документу, из которого импортируются данные.

Рекомендации

  • Помните, что для обновления задействованных вами документов может потребоваться некоторое время. По возможности используйте меньше цепочек в рамках функции IMPORTRANGE.

Разрешение и доступ

Когда таблица 1 впервые импортирует данные из таблицы 2 при выполнении функции IMPORTRANGE, система запрашивает разрешение на доступ к информации.

При попытке импортировать данные из вашей таблицы с помощью функции IMPORTRANGE появляется следующее сообщение:

You need to connect these sheets error message

  1. Подождите, пока выполняется функция IMPORTRANGE.
  2. Появляется сообщение об ошибке #REF! с текстом «Необходимо связать листы.»
  3. Нажмите Разрешить доступ.

Если вы пытаетесь использовать функцию IMPORTRANGE для импорта данных из таблицы, которая вам не принадлежит, то через несколько секунд появится следующее сообщение:

You don

  1. В браузере введите URL исходной таблицы.
  2. Запросите доступ к таблице.
  3. Дождитесь, пока владелец таблицы разрешит вам доступ к ней.

После получения разрешения все редакторы таблицы 1 смогут использовать IMPORTRANGE для импорта любых данных из таблицы 2. Разрешение будет действовать до тех пор, пока пользователь, давший его, не будет лишен прав доступа к таблице 2. Учтите, что предоставление доступа к принимающему листу учитывается в ограничении в 600 пользователей общего диска, которое действует для исходного листа.

Производительность

Функция IMPORTRANGE использует внешние данные, как и функции IMPORTXML и GOOGLEFINANCE. Это означает, что для работы функции необходимо подключение к интернету. Google Таблицы скачивают весь нужный диапазон на компьютер и на их работе скажется низкая скорость подключения к интернету. При этом действует ограничение на объем полученных данных (10 МБ для одного запроса). Если функция IMPORTRANGE работает медленно, попробуйте уменьшить размер диапазонов, которые следует импортировать. Вы также можете перенести сводные расчеты в исходный документ. Это позволит вам перемещать меньше данных в листы, находящиеся на компьютере, и выполнять больше расчетов удаленно.

Примечание. Вам доступны другие похожие инструменты. Apps Script может принимать данные из других документов и срабатывать при внесении изменений или по расписанию. Подключенные таблицы обновляются по расписанию и больше подходят для загрузки и импорта крупных наборов данных.

Лимиты на использование

Loading data may take a while because of the large number of requests error message

Если функция IMPORTRANGE использует большой объем трафика, в ячейке может появиться сообщение «Загрузка…» и подробное сообщение об ошибке с текстом «Ошибка. Загрузка данных может занять некоторое время из-за большого количества запросов. Советуем сократить число функций IMPORTHTML, IMPORTDATA, IMPORTFEED и IMPORTXML в созданных таблицах».

Ограничения касаются автора документа. Пользователю стоит учитывать количество всех функций импорта данных во всех создаваемых документах. На расходование лимита также могут повлиять изменения, которые вносят другие соавторы.

Чтобы сообщение об ошибке больше не выводилось, рекомендуем сократить число запросов на обновление данных. Например, если разрешенное значение для аргумента в функции =IMPORTDATA(аргумент) часто обновляется, это может привести к большому числу внешних запросов, которые снижают скорость обработки данных.

Актуальность данных

Google Таблицы гарантируют пользователям быстрое обновление данных в Таблицах при разумном использовании. Функция IMPORTRANGE автоматически проверяет наличие обновлений каждый час, пока документ открыт, даже если в формулу и таблицу не вносились изменения. Если вы удаляете, повторно добавляете или редактируете ячейки с помощью одной и той же формулы, то функция обновляется. Когда вы открываете и перезагружаете документ, функция IMPORTRANGE не обновляется.

Пересчитываемые функции

При использовании функции IMPORTRANGE вы можете увидеть сообщение #ERROR! с текстом «Ошибка. Функция не может ссылаться на ячейку с функцией NOW, RAND или RANDBETWEEN.» Функции импорта не могут напрямую или косвенно ссылаться на пересчитываемую функцию, такую как NOW, RAND или RANDBETWEEN. Этим предотвращается чрезмерное использование трафика в таблице пользователя, поскольку такие функции часто обновляются.

This function is not allowed to reference a cell with NOW(), RAND(), or RANDBETWEEN() error message

Примечание. Единственным исключением является пересчитываемая функция TODAY, которая обновляется один раз в день.

Рекомендуем ознакомиться с информацией по ссылкам ниже:

  1. Скопируйте результаты пересчитываемых функций.
  2. Используйте меню Специальная вставказатемТолько значения.
  3. Затем используйте ссылки на эти статические значения.

При этом все значения станут статическими. Например, если вы скопируете и вставите результат функции NOWкак значение, то оно больше не будет изменяться.

Если у вас остались вопросы, вы можете посетить справочный форум Редакторов Документов.

Похожие функции

IMPORTXML: Импорт данных из источников в формате XML, HTML, CSV, TSV, а также RSS и ATOM XML..

IMPORTHTML: Импортирует данные из таблицы или списка на веб-странице..

IMPORTFEED: Импортирует фид RSS или Atom..

IMPORTDATA: Импортирует данные в формате CSV (значения, разделенные запятыми) или TSV (значения, разделенные табуляцией). Для импорта необходимо указать ссылку на источник данных..

Подробнее о том, как оптимизировать ссылки на данные…

Эта информация оказалась полезной?

Как можно улучшить эту статью?

Понравилась статья? Поделить с друзьями:
  • Ошибка не удалось найти выделенный сервер cs go
  • Ошибка невозможно использовать данный сертификат
  • Ошибка невозможно запустить это приложение на вашем компьютере windows 10
  • Ошибка невозможно выполнить join clan room попробуйте позже
  • Ошибка невозвратных затрат это