Сообщение об ошибке синтаксического анализа формулы появляется, когда введенная формула ожидает определенный тип данных, но получила неправильный тип . Другими словами, Google Таблицы не могут интерпретировать вашу формулу. Они возвращают сообщение об ошибке, поскольку не могут выполнить запрос формулы.
Это может раздражать, особенно если формула длинная и проблема синтаксического анализа не очевидна.
Не волнуйтесь! Мы научим вас определять возможные причины проблемы парсинга и как их исправить!
Вот пять наиболее распространенных ошибок синтаксического анализа формул в Google Таблицах, с которыми вы можете столкнуться:
- #N/A
- #DIV/0!
- #VALUE!
- #REF!
- #NAME?
Выглядит знакомо? Посмотрим, как исправить эти ошибки! ?
Устранение ошибки # N/A в Google Таблицах
Когда появляется ошибка #N/A, это означает, что значение недоступно. Эта ошибка часто встречается при использовании функции VLOOKUP (ВПР), поскольку ключ поиска не может быть найден.
Однако в этом сценарии это не означает, что введенная нами формула неверна. Когда формула возвращает ошибку #N/A, это означает только то, что указанный ключ поиска не находится в выбранном диапазоне.
Давайте воспользуемся примером, чтобы улучшить визуализацию.

Как видно из этого примера, возвращаемое значение ключа поиска B вернулось как ошибка # N/A. Это связано с тем, что введенный ключ поиска «B2-05» не может быть найден в выбранном диапазоне «A5: B9» .
Следовательно, это приведет к тому, что формула вернет ошибку # N / A, означающую, что введенный нами ключ поиска не может быть найден.
# DIV/0! — Ошибка в Google Таблицах
# DIV / 0! ошибка появляется, когда формула делит число с нулевым значением. Это может произойти, когда знаменатель равен нулю. С математической точки зрения это не имеет смысла, поэтому формула возвращает # DIV / 0! ошибка.

Эта ошибка также может появиться, когда знаменатель пуст.
Как видите, поскольку B1 не имеет значения, формула не может разделить 40 на ноль.
Вы также часто можете увидеть это при использовании функции AVERAGE (СРЕДНИЙ). Ошибка появится, если диапазон, выбранный для формулы, пуст.

Просто убедитесь, что используемые или выбранные знаменатели имеют значение, и эта ошибка синтаксического анализа больше не появится!
#VALUE! — Ошибка в Google Таблицах
Если один или несколько параметров в вашей формуле имеют другой тип, чем ожидалось, вы получите эту ошибку. Итак, если функция принимает в качестве аргумента только числа, но выбранная ячейка имеет текстовое значение, вы получите #VALUE! ошибка.
Пробелы в ячейках также могут вызывать эту ошибку.

Несмотря на то, что A2 выглядит как пустое поле, мы ввели пробел внутри ячейки. Это привело к тому, что формула вернула #VALUE! ошибка.
Вот еще один пример:

Здесь мы видим, что введенная формула умножает числовое значение на текстовое значение, равное « пяти ». Эта формула не имеет математического смысла, так как параметры в формуле бывают разных типов.
Чтобы исправить эту ошибку, убедитесь, что выбранные ячейки содержат параметр одного и того же типа. При выполнении математической операции всегда не забывайте использовать только числовые значения.
Другой сценарий, в котором может возникнуть эта ошибка, — это смешивание формата дат в формуле.
Формат даты в США: ММ / ДД / ГГГ
Остальной мир: ДД / ММ / ГГГГ
Как видите, при вычитании двух дат в Google Таблицах можно было читать только 25/12/2021 как дату, поскольку это числовое значение. В Google Таблицах 25/11/2021 читается как текст, поэтому формула возвращает #VALUE! ошибка.
Чтобы исправить это, просто убедитесь, что даты, введенные в ячейки, имеют одинаковый формат.
#REF! — Ошибка в Google Таблицах
Если у вас недействительная ссылка, #REF! возникает ошибка. Наиболее распространены ситуации, когда выбранная ячейка отсутствует или формула ссылается на себя.
Отсутствует ссылка:
Это часто происходит, когда исходная выбранная ячейка была удалена (когда вы удаляете всю строку или столбец).
После удаления столбца A формула выходит из строя, поскольку они не могут найти исходный выбранный A1 .

Другой сценарий — когда мы копируем формулу с выбранным диапазоном в угол ваших таблиц Google.
Возможно, что при копировании и вставке относительный диапазон смещается за пределы листа, что недопустимо и приведет к #REF! ошибка.


Когда мы копируем формулу SUM (A1: B1) to B2 , это приведет к #REF! ошибка. Это связано с тем, что в исходной формуле выбраны два столбца, но когда формула копируется и вставляется в B2, отсутствует еще один столбец.
Круговая зависимость:
Когда введенная формула ссылается на себя, это называется циклической зависимостью. Это происходит, когда мы выбрали диапазон, который также состоит из самой формулы.

Как видите, формула содержит набор ячеек, в который входит сама формула.
Просто убедитесь, что при выборе ячеек для ввода всегда исключайте формулу, чтобы избежать появления таких ошибок.
#NAME? — Ошибка в Google Таблицах
#NAME? ошибка появляется, когда синтаксис введенной формулы имеет проблемы. Чаще всего это когда само имя функции написано с ошибкой.

Ошибка также может появиться, когда именованный диапазон не существует.
Другой сценарий — когда во введенном текстовом значении отсутствуют кавычки. Это также приведет к появлению #NAME? ошибка появится.

Если все сделано правильно, ошибка не появится.

Когда появляется ошибка #NAME?, убедитесь, что имя функции и имена диапазонов действительны, чтобы избежать этой ошибки.
Вот так! Узнав об этих пяти наиболее часто встречающихся ошибках синтаксического анализа формул, не нужно беспокоиться об их появлении. Всегда убедитесь, что понимаете, на что указывает ошибка, и исправляйте проблемы в формуле соответствующим образом.
This tutorial demonstrates how to find, interpret, and fix #REF! errors in Excel and Google Sheets.

Locate #REF! Cells in Excel
An #REF! error in Excel is a message that is displayed when a formula refers to an invalid cell. Usually, the cell is not valid because it was deleted or pasted over.
Say that, in cell C2, you have the formula: “=B2+B3+B4”.

Suppose you deleted Row 3, causing the #REF! error.

Note: If you are referencing the cells as a continuous range (e.g., “=SUM(B2:B4)”), you won’t get a #REF! error after deleting a row or a column. Also, if you are specifically referencing cells and want to delete some of them, just delete the cell values. Don’t delete the whole row, and you won’t produce the #REF! error.
To locate the #REF! cells on your worksheet just follow these steps:
- In the Ribbon, go to Home > Find & Select > Go To Special.

- In the Go To Special window, select Formulas and uncheck all boxes except Errors. Click OK.

As a result, all the cells with the #REF! error message are selected.

Note: It’s also possible to cause a #REF! error by deleting a column or row, by having an incorrect row or a column reference in an INDEX Function, or by using incorrect range references in a VLOOKUP Function. Issues with OLE (Object Linking and Embedding), DDE (Dynamic Data Exchange), or macros can also cause the #REF! error.
Fix #REF! Errors
The best way to fix the problem above is to use Find & Replace feature in Excel. Replacing the #REF! with blanks deletes the reference errors from your formulas.
- In the Ribbon, go to Home > Find & Select > Replace (or use the CTRL + F shortcut to open the Find & Replace window).

- After that the Find & Replace window will open. (1) In the Find what: box type #REF! and (2) Replace with: box leave empty. Then (3) press Replace All and (4) click Close.

- The pop-up information will inform you how many replacements were made. To close it, click OK.

As a result, the #REF! error is fixed.

Other Potential Reasons For #REF! Error and Solutions
VLOOKUP With Incorrect Range Reference
In this example, “=VLOOKUP(F2,$B$2:$C$6,3,FALSE)” returns the #REF! error, because it’s looking to return the value from the 3rd column, but the referenced range is $B$2:$C$6, which has only 2 columns. The solution is to correct the column lookup value to match the reference range (in this example: “=VLOOKUP(F2,$B$2:$C$6,2,FALSE)”).

Another way to get rid of the #REF! error is to use the IFERROR Function. If there is an error in the formula the text from the function is displayed instead of #REF! (error in this example).

INDEX With Incorrect Row or Column Reference
The #REF! error is displayed in this example (“=INDEX(B2:C6,3,3)”), because it’s looking to return the value from the 3rd row, 3rd column but the INDEX range is 5 rows by 2 columns. To correct this, choose a valid reference column (“=INDEX(B2:C6,3,2)”).

As a result, the #REF! error disappears, and cell E2 shows the correct value.

You can also use the IFERROR Function to get rid of #REF! error message.
Fix #REF! Errors in Google Sheet
#REF! errors in Google Sheets work very similar to those in Excel. In the case of a deleted cell causing the error, you can fix it with Find and replace.
Say that, in cell C6, you have the formula: “=SUM(C2+C3+C4+C5+C6)”.

If you delete Row 3, for example, that causes a #REF! error.

To fix #REF! error in Google Sheets, follow these steps:
- In the Menu, go to Edit and choose Find & Replace.

- The Find and replace window will open. (1) In the Find box enter #REF! and (2) the Replace box leave blank. After that, (3) click Find and (4) Replace All. (5) Press Done.

As a result, the error is fixed.

Эта проблема была ненастоящей на некоторое время, просто случается так часто в случайные моменты, ничего не меняется. Я также не знаю, как воспроизвести проблему, но я дам подробное объяснение того, что происходит.
Обычно функция importRange работает просто отлично и выглядит примерно так:

Правильно напечатан текст таблицы. Я использовал эту стратегию в Google Spreadsheets некоторое время.
Каждый раз, как правило, Google Spreadsheets, кажется, ломается, или, по крайней мере, функция importRange делает… и производит что-то вроде следующего:

Google, казалось, время от времени замерзает, а это происходит. Я попытался настроить параметры importRange на! X1: X,! X2: X5, изменив заголовок импортируемого листа и т.д.
В прошлом переход от X: X к! X1: X фиксировал некоторые столбцы, но не всегда все из них. Единственное надежное решение для исправления этого, которое я нашел, — это воссоздание обеих таблиц. Поскольку исходный код (тот, который импортируется), в конечном итоге становится отчетом, я хотел бы избавить своего босса от дополнительных усилий, связанных с несколькими электронными таблицами, и скорее всего исправить это и сделать с ним.
Кто-нибудь знает потенциальную причину этого срыва? Иногда он исправляет себя, иногда это не так. Это случается случайным образом, и только для некоторых электронных таблиц (у меня есть набор из 8 или около того, что все используют importRange, и одновременно не более 2). Поэтому я честно не знаю, откуда это происходит.
Боковое примечание. Google в целом сегодня немного не отвечает на запросы всех своих услуг — мой почтовый сервис в App Engine для Google Apps снизился примерно на полчаса. Может ли ограничение ресурсов/сетевых злоумышленников вызывать подобное поведение в таблицах?
Обновить. Я попытался импортировать в те же данные Таблицы из другой таблицы (т.е. дал функции importRange другую таблицу электронных таблиц). Хотя ключ и диапазон действительны, если импортированы в другую таблицу, в моем оригинале (один полный #REF!) Этот диапазон импортирован неправильно. Это заставляет меня думать, что этот сбой может применяться только к одной Таблице, где любая попытка importRange из любого другого источника не работает.
Ответ 1
Это немного поздно, но я нашел его в поиске, чтобы он мог помочь кому-то другому — попробуйте что-то вроде этого:
=IF(ISERROR(ImportRange(SpreadSheet_GUID,"Bookings!p:P")),IF(ISERROR(ImportRange(SpreadSheet_GUID,"Bookings!P:p")),ImportRange(SpreadSheet_GUID,"Bookings!P:P"),ImportRange(SpreadSheet_GUID,"Bookings!P:p")),ImportRange(SpreadSheet_GUID,"Bookings!p:P"))
В принципе, идея состоит в том, чтобы заставить Google повторно использовать варианты исходного адреса (буквы в верхнем/нижнем регистре).
Ответ 2
Проблемы с функцией IMPORTRANGE() были в некотором роде проблемой. За эти годы появилось несколько ошибок, и Google решил найти стабильное решение, поэтому оно работает так, как было разработано.
До тех пор это может помочь вам:
Вместо того, чтобы редактировать ячейку, создавая новую электронную таблицу или делать что-либо еще, чтобы перезагрузить страницу (почти как играть в лотерею), вы можете заставить листы Google автоматически перезагружать функцию автоматически, когда она не загружается:
Оберните функцию IMPORTRANGE(), которая вызывает проблемы с функцией IFERROR(). Таким образом, лист пытается импортировать, и только если он терпит неудачу, он повторяет попытку. Функция может вставляться в несколько попыток подряд.
Вы можете добавить именованные диапазоны к исходным данным (щелкните правой кнопкой мыши-source > define-named-range) для облегчения. Например, вы можете создать 3 разных именованных диапазона для диапазона «J: J». Назовите их «J», «Ja» и «Jay», затем вы вызываете свою функцию IFERROR() в листе, который хотите импортировать:
=IFERROR( IMPORTRANGE( "SheetID","J" ), IFERROR( IMPORTRANGE( "SheetID","Ja" ), IFERROR( IMPORTRANGE( "SheetID","Jay" ), IFERROR( IMPORTRANGE( "SheetID", "'TabName'!J:J" ), IFERROR( IMPORTRANGE( "SheetID", "'TabName'!j:j" )))))
Эта формула будет пытаться импортировать и доставлять ее, если она преуспеет, и если она не будет автоматически повторять попытку в 5 раз подряд, что не гарантирует, что вы добьетесь успеха, но если у вас есть 50% шансов на успех, ваш импорт, вложенный 5 подряд, должен дать вам шанс 96%, что намного лучше. Мой личный опыт был в том, что он не сработал, так как я сделал гнездо IFERROR().
Надеюсь, что это поможет.
Ответ 3
У меня были подобные проблемы, и они были решены, НЕ используя публичные ссылки на электронные таблицы. Я заметил, что ссылки открыты для общего доступа и ссылки из адресной строки при открытии листа si.
Также я заметил некоторые трудности при открытии общих таблиц из других моих учетных записей Google. Мне пришлось повторно разрешить доступ к некоторым таблицам, которые я импортировал.
Извините за мой английский.
Ответ 4
Это действительно так, в моем случае просто Ctrl + X, ожидая секунды, а затем вставляя формулу назад, механизм Sheets повторно импортирует, а затем успешно импортирует.
Если вы не можете выполнить эту процедуру вручную, вы должны использовать решение Tim.
Ответ 5
У меня была такая же проблема, и я нашел решение!
-
Уменьшите размер исходного файла
-
Чтобы уменьшить, разделить его и снова указать ссылку на импортный диапазон
Теперь вы сможете увидеть импортированный диапазон!
Если вы считаете, что это не так, шансы могут быть
-
Ваша ячейка занята, поэтому удалите все форматирование и очистите все ячейки перед импортом диапазона.
-
Все еще не работает? Пусть Бог поможет вам!
Ответ 6
Я попытался добавить:
if(ISERROR(importrange...
и это работает.
Это не означает, что ошибка исчезает, но когда это происходит, вам просто нужно перезагрузить лист и подождать некоторое время, и пусть он сам обновится.
Это гораздо более практично, чем ручная замена большой буквы на маленькую.
Ответ 7
Вот простой обходной путь, который я нашел для этой ошибки:
Я делаю Find-and-Replace («поиск по формулам») для «=» везде, где есть ошибка importrange (= REF!) (Или только для всего листа), и заменяю все на «#» в порядке чтобы все это было текстом, а не формулой. Затем я делаю еще один поиск и замену в той же области и снова заменяю «#» на «=». Это последовательно решает проблему.
Ответ 8
Я нашел это решение, отлично работает для меня:
В обеих электронных таблицах вставьте уравнение = now() в случайную ячейку, скажем, Z1. В обеих электронных таблицах вставьте функцию = importrange(), которая ссылается на функцию now другой электронной таблицы. Зайдите в настройки вашей таблицы и выберите пересчет на каждую минуту. Я пробовал множество других предложений, в том числе с помощью функции = now(), трюка now URL в этой теме или Apps Script для вставки произвольного текста через заданный интервал, но ничто не заставляло бы importrange обновляться, кроме ручного редактирования исходного кода. простынь.
https://webapps.stackexchange.com/questions/60324/how-can-i-get-google-sheets-to-auto-update-a-reference-to-another-sheet
Ответ 9
Я смог исправить = REF! ошибка при использовании «Правка»> «Найти и заменить»> «Найти» = «Заменить на» # «> Поиск в выбранном диапазоне> Также выполнить поиск в формулах> Найти> Готово. Ошибка исправлена без фактического запуска команды замены.
Ответ 10
Спасибо за все ваши советы. Действительно, замена букв в формуле, кажется, обходит эту проблему.
Это довольно старая проблема, которая все еще сохраняется… Почему Google не работает над ней?
С уважением.
Ответ 11
Похоже, что когда я вынимаю апостроф из заголовка исходного листа, проблема решена. Возможно, удаление любых символов, кроме цифр и букв, также является проблемой для вашей проблемы.
Не существует регулярного выражения для поиска формулы определенного типа на листе с точки зрения макроса. Вместо этого, если вы хотите сохранить определенные формулы, но не другие, вам нужно будет проверить каждую ячейку с формулой и определить, является ли она той, которую вы хотите сериализовать, по сравнению с той, которую вы хотите сохранить. Затем, если это тот, который вы хотите сериализовать, прочтите значения из исходного листа и запишите их в копию:
function copyFormulasAndSomeValues() {
var source = SpreadsheetApp.getActive(). getActiveSheet();
var remote = SpreadsheetApp.openById("some ID");
// Copy all static values and formulas (and charts, formatting, etc.)
var dest = source.copyTo(remote);
// To efficiently read and write values when we know nothing
// about the structure of invalid formulas, we will use a RangeList.
// If structure exists (e.g. if a1 is invalid we know `A2:A100` will be too), we can combine batch
// get/set methods with the 4 parameter getRange() method.
var toRead = [];
// Read in all formulas on the created sheet (no formula appears as "" e.g. nullstring).
var formulas = copy.getDataRange().getFormulas();
formulas.forEach(function (row, r) {
row.forEach(function (formula, c, rowData) {
if (!formula) return;
// Check if this is a formula we want to replace.
if (/* your tests here */) {
// Store R1C1 notation for later reading.
toRead.push(String(r + 1) + String(c + 1));
}
}); // End column value checking
}); // End sheet row checking
// If all formulas checked out, quit.
if (toRead.length === 0)
return;
// Read desired values into a RangeList.
var rangeList = source.getRangeList(toRead);
var toWrite = rangeList.getRanges().map(function (range) {
return range.getValue();
});
// Write to the same regions in the destination.
dest.getRangeList(toRead).getRanges().forEach(function (range, i) {
range.setValue(toWrite[i]);
});
}
Если вы знаете структуру / расположение того, что будет действительным / недействительным, вы сможете улучшить этот метод, читая пакетно, записывая статические значения.
Я обнаружил, что в любое время #REF! существует ошибка, таблицы Google навсегда заменяют неверную ссылку в формуле на #REF !. Даже если бы это была всего лишь опечатка, когда одна буква была пропущена, и все, что потребовалось, чтобы исправить это, — это удалить этот лишний символ … огромная трата времени, а также заставила меня потерять довольно много работы, когда я не могу запомните, какая ссылка где была в сложной формуле.
Кто-нибудь знает исправление?
2 ответа
Лучший ответ
Заменяемая ссылка является дизайном. в Google было отправлено предложение поставить только #REF! В качестве выведенного значения вместо изменения существующей формулы.
0
TheRealMrCrowley
14 Апр 2016 в 14:04
Хотя в формулах отображается имя, именованные диапазоны, используемые в формулах, на самом деле относятся к объектам именованного диапазона, а не к самим именам. При удалении именованного диапазона вы удаляете объект, на который ссылается формула. Создание нового именованного диапазона с тем же именем — это не тот объект, который используется в формуле. Чтобы изменить диапазон, на который ссылается именованный диапазон, следует изменить объект именованного диапазона, а не удалять его и создавать новый.
setRange(range)
Устанавливает / обновляет диапазон для этого именованного диапазона.
https://developers.google.com/apps-script/reference/spreadsheet/named-range#setrangerange
0
ScampMichael
13 Апр 2016 в 15:35