Каждый, кто более-менее часто имеет дело с формулами Excel (пишет сам или пользуется файлами, созданными другими), знает, что иногда в этих формулах появляются крайне неприятные ошибки, которые приводят к их полной неработоспособности. В разнообразии ошибок легко запутаться. Но чтобы уметь быстро их исправлять, нужно знать, почему возникает та или иная ошибка и что с ней делать. Разберем их основные виды.
1) Ошибка ###############################
Если ячейка вдруг целиком заполнилась символами решётки, то варианта всего два: либо значение ячейки не помещается в нее, либо в ней введено отрицательное значение времени (случается, если формат ячейки – “Время”).
В первом случае достаточно расширить столбец или уменьшить шрифт, а во втором – исправить значение времени. Например, если в формуле из меньшего времени вычитается большее, то нужно сделать наоборот (или взять результат вычислений по модулю).
2) Ошибка #ДЕЛ/0!
Эту ошибку часто зовут “дело”, хотя говорит она не о делах а о том, что нельзя делить на ноль. Возникает, если в формуле происходит деление на 0 или на пустую ячейку. Соответственно, исправив нулевой или пустой знаменатель, можно исправить ошибку.
3) Ошибка #Н/Д
Самая распространенная ошибка. Возникает тогда, когда функция поиска данных не находит искомое значение в диапазоне. Функции поиска данных это: ВПР, ГПР, ПОИСКПОЗ, ПРОСМОТР. Соответственно, решается либо изменением поискового запроса (“что ищем”), либо внесением в диапазон искомого значения. Однако, чаще всего эта ошибка вполне ожидаема и просто помогает проверить наличие того или иного значения в списке. Многие пользователи предпочитают выводить вместо нее пустые значения или какой-то значимый текст с помощью функции ЕСЛИОШИБКА. Например:
=ЕСЛИОШИБКА(ВПР(A1;B:C;2;0);”Отсутствует в справочнике”)
4) Ошибка #ИМЯ?
Возникает, когда в формуле используется нераспознанное программой имя. Именем Excel считает любой текст, не являющийся названием функции, ссылкой на ячейку/диапазон и не взятый в кавычки. Например, в формуле =СЕГОДНЯ()+СЕГ-A4 слово СЕГ будет распознано как имя.
Когда распознанного имени нет в списке именованных диапазонов, появляется данная ошибка. Способы решения:
- Создать нужное имя в диспетчере имен;
- Проверить правильность написания уже существующего имени;
- Проверить, верно ли написаны функции рабочего листа (опечатки приведут к возникновению ошибки)
5) Ошибка #ССЫЛКА!
Данная ошибка возникает в случае, когда ячейка или диапазон, на который ссылается формула, был удален, перемещен или стал недоступным. Например, если есть формула
=A1+C3
и Вы удалите столбец С, то формула выдаст ошибку #ССЫЛКА!, так как вместе со столбцом С была удалена и ячейка C3. Обратите внимание, что на листе по-прежнему есть ячейка с таким адресом, но физически это уже не та ячейка, которая раньше располагалась на этом месте (хотя адрес тот же).
Чтобы исправить ошибку, нужно отменить удаление ячейки (если есть такая возможность) или заново сослаться на нужный диапазон. Другой вариант – использовать функцию ДВССЫЛ для тех ячеек, которые могут быть удалены. Например, формула =A1+ДВССЫЛ(“C3”) будет работать даже тогда, когда мы удалим столбец C.
Другой вариант возникновения – файлы, на которые есть ссылки были перемещены, удалены или переименованы. Любое из этих действий при последующем обновлении связей выдаст указанную ошибку. Вывод – будьте аккуратнее с файлами, на которые делаете ссылки.
6) Ошибка #ЗНАЧ!
Возникает чаще всего тогда, когда в формуле использован неверный тип данных. Помните, что текст, число или дата – разные типы данных и обрабатываются по разному. Если передать, например, функции ДЕНЬНЕД() ссылку на ячейку с текстом, то появится указанная ошибка. То же самое произойдет, если попытаетесь вычесть из 100 слово “десять”. Для исправления – проверьте все аргументы Соответствуют ли они требуемым типам данных? Если нет – укажите правильные типы.
7) Ошибка #ПУСТО!
Крайне редкая ошибка, так как мало кто использует в работе оператор пересечения диапазонов (про него можно почитать тут). Собственно, возникает тогда, когда диапазоны не пересекаются. Для исправления – укажите пересекающиеся диапазоны. Например, формула:
={A1:B5 A6:B10}
выдаст ошибку. А формула:
={A1:B5 A5:B10}
будет работать безошибочно и вернет диапазон A5:B5
8) Ошибка #ЧИСЛО!
Еще одна не самая распространенная ошибка. Встречается, если задан недопустимый числовой аргумент. То есть, тип данных указан верно (поэтому не #ЗНАЧ!), но само число выбрано недопустимое. Чаще всего встречается в финансовых функциях. Например, формула:
=ПЛТ(-40;2;2)
выдаст эту ошибку, так как аргумент “Ставка” не может быть отрицательным.
Для исправления – введите допустимый числовой аргумент.
Знать, что означают ошибки – полбеды. Нужно еще понять, какая именно часть формулы генерирует ошибку. Для этого формулу нужно проанализировать. Советы на эту тему можно найти в этой статье. Желаем Вам только исправных формул!
Видеоверсию данной статьи смотрите на нашем канале на YouTube
Чтобы не пропустить новые уроки и постоянно повышать свое мастерство владения Excel – подписывайтесь на наш канал в Telegram Excel Everyday
Много интересного по другим офисным приложениям от Microsoft (Word, Outlook, Power Point, Visio и т.д.) – на нашем канале в Telegram Office Killer
Вопросы по Excel можно задать нашему боту обратной связи в Telegram @ExEvFeedbackBot
Вопросы по другому ПО (кроме Excel) задавайте второму боту – @KillOfBot
По заказам и предложениям обращайтесь к нам на сайте tDots.ru
С уважением, команда tDots.ru
Возможности Эксель позволяют выполнять вычисления практически любой сложности благодаря формулам и функциям. Однако иногда пользователи могут столкнуться с тем, что формула отказывается работать или вместо желаемого результата выдает ошибку. В данной статье мы рассмотрим, почему так получается, и какие действия предпринять для решения возникшей проблемы.
Содержание
- Решение 1: меняем формат ячеек
- Решение 2: отключаем режим “Показать формулы”
- Решение 3: активируем автоматический пересчет формул
- Решение 4: исправляем ошибки в формуле
- Заключение
Решение 1: меняем формат ячеек
Очень часто Excel отказывается выполнять расчеты из-за того, что неправильно выбран формат ячеек.
Например, если задан текстовый формат, то вместо результата мы будем видеть просто саму формулу в виде обычного текста.
В некоторых ситуациях, когда выбран не тот формат, результат может быть посчитан, но отображаться он будет совсем не так, как мы хотели бы.
Очевидно, что формат ячеек нужно изменить, и делается это следующим образом:
- Чтобы определить текущий формат ячейки (диапазон ячеек), выделяем ее и, находясь во вкладке “Главная”, обращаем вниманием на группу инструментов “Число”. Здесь есть специальное поле, в котором показывается формат, используемый сейчас.
- Выбрать другой формат можно из списка, который откроется после того, как мы кликнем по стрелку вниз рядом с текущим значением.
Формат ячеек можно сменить с помощью другого инструмента, который позволяет задать более расширенные настройки.
- Выбрав ячейку (или выделив диапазон ячеек) щелкаем по ней правой кнопкой мыши и в открывшемся списке жмем по команде “Формат ячеек”. Или вместо этого, после выделения жмем сочетание Ctrl+1.
- В открывшемся окне мы окажемся во вкладке “Число”. Здесь в перечне слева представлены все доступные форматы, которые мы можем выбрать. С левой стороны отображаются настройки выбранного варианта, которые мы можем изменить на свое усмотрение. По готовности жмем OK.
- Чтобы изменения отразились в таблице, по очереди активируем режим редактирования для всех ячеек, в которых формула не работала. Выбрав нужный элемент перейти к редактированию можно нажатием клавиши F2, двойным кликом по нему или щелчком внутри строки формул. После этого, ничего не меняя, жмем Enter.
Примечание: Если данных слишком много, на ручное выполнение последнего шага потребуется немало времени. В данном случае можно поступить иначе – воспользуемся Маркером заполнения. Но этот работает только в том случае, когда во всех ячейках используются одинаковая формула.
- Выполняем последний шаг только для самой верхней ячейки. Затем наводим указатель мыши на ее правый нижний угол, как только появится черный плюсик, зажав левую кнопку мыши тянем его до конца таблицы.
- Получаем столбец с результатами, посчитанными с помощью формул.
Решение 2: отключаем режим “Показать формулы”
Когда мы вместо результатов видим сами формулы, это может быть связано с тем, что активирован режим показа формул, и его нужно отключить.
- Переключаемся во вкладку “Формулы”. В группе инструментов “Зависимость формул” щелкаем по кнопке “Показать формулы”, если она активна.
- В результате, в ячейках с формулами теперь будут отображаться результаты вычислений. Правда, из-за этого могут измениться границы столбцов, но это поправимо.
Решение 3: активируем автоматический пересчет формул
Иногда может возникать ситуация, когда формула посчитала какой-то результат, однако, если мы решим изменить значение в одной из ячеек, на которую формула ссылается, пересчет выполнен не будет. Это исправляется в параметрах программы.
- Заходим в меню “Файл”.
- В перечне слева выбираем раздел “Параметры”.
- В появившемся окне переключаемся в подраздел “Формулы”. В правой части окна в группе “Параметры вычислений” ставим отметку напротив опции “автоматически”, если выбран другой вариант. По готовности щелкаем OK.
- Все готово, с этого момента все результаты по формулам будут пересчитываться в автоматическом режиме.
Решение 4: исправляем ошибки в формуле
Если в формуле допустить ошибки, программа может воспринимать ее как простое текстовое значение, следовательно, расчеты по ней выполнятся не будут. Например, одной из самых популярных ошибок является пробел, установленный перед знаком “равно”. При этом помним, что знак “=” обязательно должен стоять перед любой формулой.
Также, довольно часто ошибки допускаются в синтаксисах функций, так как заполнить их не всегда просто, особенно, когда используется несколько аргументов. Поэтому, рекомендуем использовать Мастер функций для вставки функции в ячейку.
Чтобы формула заработала, все что нужно сделать – внимательно проверить ее и исправить все выявленные ошибки. В нашем случае нужно просто убрать пробел в самом начале, который не нужен.
Иногда проще удалить формулу и написать ее заново, чем пытаться искать ошибку в уже написанной. То же самое касается функций и их аргументов.
Распространенные ошибки
В некоторых случаях, когда пользователь допустил ошибку при вводе формулы, в ячейке могут отображаться такие значения:
- #ДЕЛ/0! – результат деления на ноль;
- #Н/Д – ввод недопустимых значений;
- #ЧИСЛО! – неверное числовое значение;
- #ЗНАЧ! – используется неправильный вид аргумента в функции;
- #ПУСТО! – неверно указан адрес дапазона;
- #ССЫЛКА! – ячейка, на которую ссылалась формула, удалена;
- #ИМЯ? – некорректное имя в формуле.
Если мы видим одну из вышеперечисленных ошибок, в первую очередь проверяем, все ли данные в ячейках, участвующих в формуле, заполнены корректно. Затем проверяем саму формулу и наличие в ней ошибок, в том числе тех, которые противоречат законам математики. Например, не допускается деление на ноль (ошибка #ДЕЛ/0!).
В случаях, когда приходится иметь со сложными функциями, которые ссылаются на много ячеек, можно воспользоваться инструментов проверки.
- Отмечаем ячейку, содержащую ошибку. Во вкладке “Формулы” в группе инструментов “Зависимости формул” жмем кнопку “Вычислить формулу”.
- В открывшемся окне будет отображаться пошаговая информация по расчету. Для этого нажимаем кнопку “Вычислить” (каждое нажатие осуществляет переход к следующему шагу).
- Таким образом, можно отследить каждый шаг, найти ошибку и устранить ее.
Также можно воспользоваться полезным инструментом “Проверка ошибок”, который расположен в том же блоке.
Откроется окно, в котором будет описана причина ошибки, а также предложен ряд действий касательно нее, в т.ч. исправление в строке формул.
Заключение
Работа с формулами и функциями – одна из главных функциональных возможностей Excel, и, несомненно, одно из основных направлений использования программы. Поэтому очень важно знать, какие проблемы могут возникать при работе с формулами, и как их можно исправить.
#1
alsuper
-
- Пользователи
-
- 5 сообщений
Новичок
Отправлено 30 Октябрь 2006 – 02:12
с помощью импорта внешних данных с сайта получаю числовые данные. выходят они в таком формате 2,840.00 что означает 2840. Из-за последних трёх символов .00 невозможно вставить в формулу для автоматического расчёта. Как сделать либо автоматическое убирание этих символов, либо возможность расчёта данных чисел в формулах?
- Наверх
#2
DeBOBAHer
DeBOBAHer
- Город:)
- Интересы:SithAdmin
Отправлено 30 Октябрь 2006 – 02:42
Можно попытаться настроить формат чисел в Windows в региональных настройках.
Какой же русский не любит быстрой езды – бессмысленной и беспощадной!
Нет такой чистой и светлой мысли, которую бы русский человек не смог бы выразить в грязной матерной форме.
Еще никто так, как русские, не глушил рыбу! (в Тихом океане – да космической станцией!)
- Наверх
#3
joy
joy
- Город:МО
- Интересы:догадайтесь с трех раз… Вы знали!!!
Отправлено 30 Октябрь 2006 – 02:47
думаешь, поможет? он же выдирает это со странички в браузере. соответственно, как страничка сделана, так он и выдерет. или ты не это имел в виду?
“Что использовать чтобы огурцы ложкой банка майонеза.” ©bash.org.ru…
- Наверх
#4
megaforce
megaforce
-
- Пользователи
-
- 1 сообщений
Новичок
Отправлено 30 Октябрь 2006 – 02:55
Настройка – Панель управления – Языки и стандарты – Числа – Разделитель целой и дробной части числа
- Наверх
#5
v_user
Отправлено 30 Октябрь 2006 – 03:00
Настройка – Панель управления – Языки и стандарты – Числа – Разделитель целой и дробной части числа
<{POST_SNAPBACK}>
Да, можно так. Но это тогда коснется всех программ.
Думаю наилучшее написать скрипт преобразования на VBA ввиде функции (т.е. подсьавляется в форулу). А сам скрипт прост: берет значение как текст, перебирает по каждому символу, запятые просто выкидывает, а точку меняет на запятую. Все, вопрос решен.
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#6
v_user
Отправлено 30 Октябрь 2006 – 03:31
Вот, не поленился, написал.
Открой Ексел, запиши какой угодно макрос (главное чтоб он был). Теперь по <Alt><F11> открываешь окно VBA. Там найдешь раздел “Modules”. В нем подраздел, по умолчанию “Module1”. Открываешь этот подраздел. Там на VBA будет записан твой макрос. Нафиг стираешь его, а вместо него пишешь вот такой тест:
Public Function Convert_My(str As String) As Double Dim dl_str As Long, i As Long, tmp As String, z_ish As String, z_end As String, otvet As Double Convert_My = 0 On Error GoTo 11 z_end = "" ish = str dl_str = Len(ish) For i = 1 To dl_str tmp = Mid(ish, i, 1) If tmp = "," Then GoTo 23 If tmp = "." Then tmp = "," z_end = z_end & tmp 23 Next i otvet = z_end Convert_My = otvet 11 End Function
Сохраняешься. Теперь в итоговую ячеку прописываешь формулу, например =Convert_My(A5).
В ячейке А5 находится значение например 2,685.34, и функция будет возвращать в итоговую ячейку нормальной число 2685,34.
З.Ы. Подправил, ошибка была
Сообщение отредактировал v_user: 31 Октябрь 2006 – 03:35
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#7
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 30 Октябрь 2006 – 10:25
2 v_user
По-моему загон, и по-любому должныа быть возможность в эксель это настроить.
Здесь, например: Меню “Сервис”-“Параметры”, вкладка “Международные”. Убрать галочку “Использовать системные разделители” и поставить нужный “Разделитель дробной и целой части”. По крайней мере данные можно импортировать, потом изменить формат на нужный и сохранить. А можно прямо так и работать.
Прикрепленные файлы
-
excel.png 8,63К
66 Количество загрузок:
Сообщение отредактировал ErV: 30 Октябрь 2006 – 10:27
ушел на Linux-ресурсы.
- Наверх
#8
v_user
Отправлено 31 Октябрь 2006 – 06:52
2 v_user
По-моему загон, и по-любому должныа быть возможность в эксель это настроить.Здесь, например: Меню “Сервис”-“Параметры”, вкладка “Международные”. Убрать галочку “Использовать системные разделители” и поставить нужный “Разделитель дробной и целой части”. По крайней мере данные можно импортировать, потом изменить формат на нужный и сохранить. А можно прямо так и работать.
<{POST_SNAPBACK}>
Так в том-то и дело, что это коснется всего Эксель. Да сколько уже раз сталкивался что люди изменив запятую на точку уже получали невнятный гемор. Одну свою задачу решали (а это решение через кривые руки программера который даже экспорт/импорт организовать не может по человечески), но другие наживали.
Что ж, если такой подход удовлетворяет, то ради бога. Только вот разбираться в числах, где запятая – разделитель разрядов, а точка – есть “десятичная точка” (вместо соответсвенно пробела и запятой) – думаю “продвинотому” бухгалтеру/менеджеру будет не весело.
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#9
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 31 Октябрь 2006 – 03:24
Я просто думаю, что автор – не программер, это раз.
А следовательно, ему проще запомнить где галочка, чем весь твой скрипт. (без обид)
Переформатировал бы ты его, что ли… тут классный тэг есть – [code=auto:0]
читать удобнее, правда хайлайтинг и всякие загоны со шрифтами убивает.
ушел на Linux-ресурсы.
- Наверх
#10
v_user
Отправлено 31 Октябрь 2006 – 03:39
Я просто думаю, что автор – не программер, это раз.
А следовательно, ему проще запомнить где галочка, чем весь твой скрипт. (без обид)
Переформатировал бы ты его, что ли… тут классный тэг есть – [code=auto:0]
читать удобнее, правда хайлайтинг и всякие загоны со шрифтами убивает.<{POST_SNAPBACK}>
Да не, какие обиды.
Просто меня иногда нервируют программисты, которые делают что-то через одно место и/или не до конца. Очень часто это у них в превычке (они так начинали). Вот я и акцентировал на том, что если делать, то так чтоб работало, а не чтоб сперва настроить а уж потом работало.
Кстати, переделал, спс за подсказку про тэг. И кстати изложить посторался как программировать как для новиска.
Сообщение отредактировал v_user: 31 Октябрь 2006 – 03:41
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#11
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 31 Октябрь 2006 – 09:21
Ещё рекомендация.
Я когда информатикам задачи делал ради прикола ,
обнаружил, что если человек не знает инглиш, то знает транслит.
Можно изменить имена и ему все будет понятно (Кстати, если не ошибаюсь, по русски в офисе тоже можно программить).
И ещё: у тебя z_ish не используется, как я понял.
И зачем копировать str в ish?
Вот так например (не факт что не сломал, не тестил, по тексту должно работать):
Public Function StrokuVChislo(stroka As String) As Double Dim dlinaStroki As Long, positsiya As Long, curSimvol As String, strokaOtvet as String, otvet As Double otvet = 0; On Error GoTo 11 strokaOtvet = "" dlinaStroki = Len(stroka) For positsiya = 1 to dlinaStroki curSimvol = Mid(stroka, i, 1); if curSimvol = "," Then Goto 23 if curSimvol = "." Then curSimvol = "," strokaOtvet = strokaOtvet & curSimvol 23 Next i otvet = strokaOtvet 11 StrokuVChislo = otvet End Function
У меня сейчас диск с офисом грохнулся, нет документации по бейсику и влом. Если хош, могу переделать в более человеческий вид на досуге.
Сообщение отредактировал ErV: 31 Октябрь 2006 – 09:36
ушел на Linux-ресурсы.
- Наверх
#12
v_user
Отправлено 01 Ноябрь 2006 – 07:54
Все верно. Так и надо рисовать. Я писал на скоро рука в данном случае, но вообще название переменных стараюсь всегда продумывать. Но грешок ест – люблю короткие имена внутри отдельновзятой функции (все равно дальше функции они не уходят).
По поводу z_ish. В Экселе я на ВБА не пишу, я периодически работаю в Access. Понятно, что ВБА что для экселя, что для аксэса одинаково. Так вот. Столкнулся вот конкретно с каким глюком. Когды ты работаешь внутри функции с “входящими” переменными, то можешь нарваться на глюк необоснованной неправильной работы.
Public Function StrokuVChislo(stroka As String) As Double
Если внутри этой функции ты много раз вызовешь переменную “stroka”, то этот глюк может вылезти. Но стоит в начале обявить внутренюю переменную, ей присвоить значение “stroka”, то эту переменную хоть миллион раз используй – все будет работать как положено. Вот такой, блин, глюк. С тех пор, как я на него потратил целый день (пока въехал в чем дело), у меня уже в автомате никогда не использовать входящие переменные, а сразу передавать их значение внутренним переменным.
Да еще.
Public Function StrokuVChislo(stroka As String) As Double Dim dlinaStroki As Long, positsiya As Long, curSimvol As String, strokaOtvet as String, otvet As Double StrokuVChislo = 0; On Error GoTo 11 strokaOtvet = "" dlinaStroki = Len(stroka) For positsiya = 1 to dlinaStroki curSimvol = Mid(stroka, i, 1); if curSimvol = "," Then Goto 23 if curSimvol = "." Then curSimvol = "," strokaOtvet = strokaOtvet & curSimvol 23 Next i otvet = strokaOtvet StrokuVChislo = otvet 11 End Function
Я немного подправил твое. Я считаю (ИМХО) что после точки возврата по ошибке ничего быть не должно (или или должно, но только ссылка на другую точку возврата). Ведь ты же не знаешь что будет содержаться в otvet в момент ошибки…
Сообщение отредактировал v_user: 01 Ноябрь 2006 – 08:21
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#13
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 01 Ноябрь 2006 – 10:30
2v_user
в otvet в момент ошибки должен содержаться 0. Но только, если ошибка не произойдет во время присваиавания. (Тогда, по логике вещей, тоже должен быть ноль, но не уверен, признаюсь, момент упустил). Документации по VBA сейчас нет и я под него не пишу – просто по аналогии синтаксисов накатал. Так что думаю, что твой вариант живучей.
ушел на Linux-ресурсы.
- Наверх
#14
v_user
Отправлено 02 Ноябрь 2006 – 09:01
2v_user
в otvet в момент ошибки должен содержаться 0. Но только, если ошибка не произойдет во время присваиавания. (Тогда, по логике вещей, тоже должен быть ноль, но не уверен, признаюсь, момент упустил). Документации по VBA сейчас нет и я под него не пишу – просто по аналогии синтаксисов накатал. Так что думаю, что твой вариант живучей.<{POST_SNAPBACK}>
Все правильно. По идее должен быть ноль. Но:
– кто сказал что клюков не бывает у Микрософта?
– Это в данном случае так. Но часто бывает что приходится вносить изменения в код (особенно если он дастаточно большой), и в итоге ситуация меняется, а об действии после возврата по ошибке как-то забываешь. Сколько раз сам же на свои грабли наступал, теперь вот всегда этот момент контролирую (даже если и не надо, как в данном случае).
Кстати, еще. Нашел еще ошибочку у тебя. При объявлении переменных ты перешел на вторую строку. Просто так это нельзя делать, надо в конце первой строки после пробела добавить знак подчеркивания. (Да точки с запятой парачку в конце строки убрал).
Еще добавил вывод ошибки. Предпоследняя строка (здесь отремирована). Чтоб выводило – надо убрать апостроф.
Public Function StrokuVChislo(stroka As String) As Double Dim dlinaStroki As Long, positsiya As Long, curSimvol As String, _ strokaOtvet as String, otvet As Double StrokuVChislo = 0 On Error GoTo 11 strokaOtvet = "" dlinaStroki = Len(stroka) For positsiya = 1 to dlinaStroki curSimvol = Mid(stroka, positsiya, 1) if curSimvol = "," Then Goto 23 if curSimvol = "." Then curSimvol = "," strokaOtvet = strokaOtvet & curSimvol 23 Next positsiya otvet = strokaOtvet StrokuVChislo = otvet 11 'MsgBox Err.Description End Function
Короче вот этот проверил, работает.
Сообщение отредактировал v_user: 02 Ноябрь 2006 – 09:20
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#15
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 02 Ноябрь 2006 – 09:29
Кстати, еще. Нашел еще ошибочку у тебя. При объявлении переменных ты перешел на вторую строку. Просто так это нельзя делать, надо в конце первой строки после пробела добавить знак подчеркивания. (Да точки с запятой парачку в конце строки убрал).
Это все уже автоматом сделано (рефлекс) – у меня основной язык C++. Соответственно, по тому и точки с запятой в конце строк, и подчерка нет.
ушел на Linux-ресурсы.
- Наверх
#16
v_user
Отправлено 02 Ноябрь 2006 – 09:42
Что-то автора темы не слышно, видать решил уже задачку сам как-то.
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#17
alsuper
alsuper
-
- Пользователи
-
- 5 сообщений
Новичок
Отправлено 02 Ноябрь 2006 – 10:13
Что-то автора темы не слышно, видать решил уже задачку сам как-то.
<{POST_SNAPBACK}>
О господа! Премного благодарен! так много ответов и не ожидал 🙂
я действительно не программер (хотя в школе на бейсике занял 2 место, но давно это было)), буду пытать разобраться в рекомендациях :-), об итогах напишу обязательно 🙂
данные берутся по ссылке http://www.lme.com/d…daily_metal.asp
импортируемые данные-верхняя таблица, и в середине правая (где курсы валют). Кстати с последней тоже косяк, необходимый мне курс евро отображаетсфя как дата (например сегодняшний курс 1.2755, в ячейке отображается как янв.55, а если посмотреть содержимое ячейки-01.01.2755)
Я знаю где-то в эксель есть что-то вроде отключения автоматического определения дат, но провозился час-неполучается найти где это.
- Наверх
#18
v_user
Отправлено 02 Ноябрь 2006 – 10:42
Ну тут думаю надо делать Эксел в два листа.
Первый – промежуточный. Туда все импортируется. Все импортируется как текст! Второй лист итоговый – то что видно в Итоге. Там просто настрены ссылки на данные первого листа.
Когда экспортируешь как текст – все данные будут в том виде, как на сайте. А потом через ссылки (используя предложенну здесь функцию) числа сайта переводишь в числа понятные Эксель.
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
#19
alsuper
alsuper
-
- Пользователи
-
- 5 сообщений
Новичок
Отправлено 02 Ноябрь 2006 – 12:52
Ну тут думаю надо делать Эксел в два листа.
Первый – промежуточный. Туда все импортируется. Все импортируется как текст! Второй лист итоговый – то что видно в Итоге. Там просто настрены ссылки на данные первого листа.
Когда экспортируешь как текст – все данные будут в том виде, как на сайте. А потом через ссылки (используя предложенну здесь функцию) числа сайта переводишь в числа понятные Эксель.<{POST_SNAPBACK}>
Неполучается у меня, проверьте порядок действий
Порядок действий
Записываю любой макрос
Сервис-макрос-начать запись-ок
Alt f11, modules-module 1-кликая 2раза, в окно вставляю последнюю программу написанную v user
Сохраняюсь
На другом листе в ячейку пишу
=Convert_My(имя ячейки)
Пишет ошибку, формула содержит нераспознанный текст
И ещё, курс евро импортируется с точкой 1.2755 , что тоже не понятно экселю, для этого случая другой макрос?
- Наверх
#20
v_user
Отправлено 02 Ноябрь 2006 – 02:59
Неполучается у меня, проверьте порядок действий
Порядок действий
Записываю любой макрос
Сервис-макрос-начать запись-ок
Alt f11, modules-module 1-кликая 2раза, в окно вставляю последнюю программу написанную v user
Сохраняюсь
На другом листе в ячейку пишу
=Convert_My(имя ячейки)Пишет ошибку, формула содержит нераспознанный текст
И ещё, курс евро импортируется с точкой 1.2755 , что тоже не понятно экселю, для этого случая другой макрос?<{POST_SNAPBACK}>
Если ты взял последнюю программу – то тогда не Convert_My, а StrokuVChislo (ErV ее переименовал, когда переписывал скрипт более понятно).
Это функция присутствует в списке. Т.е. когда вызываешь список стандартных функций, то среди там ОКРУЛ, СУММ, ЕСЛИ и т.д. будет еще и функция StrokuVChislo.
Сообщение отредактировал v_user: 02 Ноябрь 2006 – 03:01
Разве “Pentium M” – это мобильно? Вот “Тополь М” – это мобильно!
- Наверх
Возможности Эксель позволяют выполнять вычисления практически любой сложности благодаря формулам и функциям. Однако иногда пользователи могут столкнуться с тем, что формула отказывается работать или вместо желаемого результата выдает ошибку. В данной статье мы рассмотрим, почему так получается, и какие действия предпринять для решения возникшей проблемы.
Содержание
- Решение 1: меняем формат ячеек
- Решение 2: отключаем режим “Показать формулы”
- Решение 3: активируем автоматический пересчет формул
- Решение 4: исправляем ошибки в формуле
- Заключение
Решение 1: меняем формат ячеек
Очень часто Excel отказывается выполнять расчеты из-за того, что неправильно выбран формат ячеек.
Например, если задан текстовый формат, то вместо результата мы будем видеть просто саму формулу в виде обычного текста.
В некоторых ситуациях, когда выбран не тот формат, результат может быть посчитан, но отображаться он будет совсем не так, как мы хотели бы.
Очевидно, что формат ячеек нужно изменить, и делается это следующим образом:
- Чтобы определить текущий формат ячейки (диапазон ячеек), выделяем ее и, находясь во вкладке “Главная”, обращаем вниманием на группу инструментов “Число”. Здесь есть специальное поле, в котором показывается формат, используемый сейчас.
- Выбрать другой формат можно из списка, который откроется после того, как мы кликнем по стрелку вниз рядом с текущим значением.
Формат ячеек можно сменить с помощью другого инструмента, который позволяет задать более расширенные настройки.
- Выбрав ячейку (или выделив диапазон ячеек) щелкаем по ней правой кнопкой мыши и в открывшемся списке жмем по команде “Формат ячеек”. Или вместо этого, после выделения жмем сочетание Ctrl+1.
- В открывшемся окне мы окажемся во вкладке “Число”. Здесь в перечне слева представлены все доступные форматы, которые мы можем выбрать. С левой стороны отображаются настройки выбранного варианта, которые мы можем изменить на свое усмотрение. По готовности жмем OK.
- Чтобы изменения отразились в таблице, по очереди активируем режим редактирования для всех ячеек, в которых формула не работала. Выбрав нужный элемент перейти к редактированию можно нажатием клавиши F2, двойным кликом по нему или щелчком внутри строки формул. После этого, ничего не меняя, жмем Enter.
Примечание: Если данных слишком много, на ручное выполнение последнего шага потребуется немало времени. В данном случае можно поступить иначе – воспользуемся Маркером заполнения. Но этот работает только в том случае, когда во всех ячейках используются одинаковая формула.
- Выполняем последний шаг только для самой верхней ячейки. Затем наводим указатель мыши на ее правый нижний угол, как только появится черный плюсик, зажав левую кнопку мыши тянем его до конца таблицы.
- Получаем столбец с результатами, посчитанными с помощью формул.
Решение 2: отключаем режим “Показать формулы”
Когда мы вместо результатов видим сами формулы, это может быть связано с тем, что активирован режим показа формул, и его нужно отключить.
- Переключаемся во вкладку “Формулы”. В группе инструментов “Зависимость формул” щелкаем по кнопке “Показать формулы”, если она активна.
- В результате, в ячейках с формулами теперь будут отображаться результаты вычислений. Правда, из-за этого могут измениться границы столбцов, но это поправимо.
Решение 3: активируем автоматический пересчет формул
Иногда может возникать ситуация, когда формула посчитала какой-то результат, однако, если мы решим изменить значение в одной из ячеек, на которую формула ссылается, пересчет выполнен не будет. Это исправляется в параметрах программы.
- Заходим в меню “Файл”.
- В перечне слева выбираем раздел “Параметры”.
- В появившемся окне переключаемся в подраздел “Формулы”. В правой части окна в группе “Параметры вычислений” ставим отметку напротив опции “автоматически”, если выбран другой вариант. По готовности щелкаем OK.
- Все готово, с этого момента все результаты по формулам будут пересчитываться в автоматическом режиме.
Решение 4: исправляем ошибки в формуле
Если в формуле допустить ошибки, программа может воспринимать ее как простое текстовое значение, следовательно, расчеты по ней выполнятся не будут. Например, одной из самых популярных ошибок является пробел, установленный перед знаком “равно”. При этом помним, что знак “=” обязательно должен стоять перед любой формулой.
Также, довольно часто ошибки допускаются в синтаксисах функций, так как заполнить их не всегда просто, особенно, когда используется несколько аргументов. Поэтому, рекомендуем использовать Мастер функций для вставки функции в ячейку.
Чтобы формула заработала, все что нужно сделать – внимательно проверить ее и исправить все выявленные ошибки. В нашем случае нужно просто убрать пробел в самом начале, который не нужен.
Иногда проще удалить формулу и написать ее заново, чем пытаться искать ошибку в уже написанной. То же самое касается функций и их аргументов.
Распространенные ошибки
В некоторых случаях, когда пользователь допустил ошибку при вводе формулы, в ячейке могут отображаться такие значения:
- #ДЕЛ/0! – результат деления на ноль;
- #Н/Д – ввод недопустимых значений;
- #ЧИСЛО! – неверное числовое значение;
- #ЗНАЧ! – используется неправильный вид аргумента в функции;
- #ПУСТО! – неверно указан адрес дапазона;
- #ССЫЛКА! – ячейка, на которую ссылалась формула, удалена;
- #ИМЯ? – некорректное имя в формуле.
Если мы видим одну из вышеперечисленных ошибок, в первую очередь проверяем, все ли данные в ячейках, участвующих в формуле, заполнены корректно. Затем проверяем саму формулу и наличие в ней ошибок, в том числе тех, которые противоречат законам математики. Например, не допускается деление на ноль (ошибка #ДЕЛ/0!).
В случаях, когда приходится иметь со сложными функциями, которые ссылаются на много ячеек, можно воспользоваться инструментов проверки.
- Отмечаем ячейку, содержащую ошибку. Во вкладке “Формулы” в группе инструментов “Зависимости формул” жмем кнопку “Вычислить формулу”.
- В открывшемся окне будет отображаться пошаговая информация по расчету. Для этого нажимаем кнопку “Вычислить” (каждое нажатие осуществляет переход к следующему шагу).
- Таким образом, можно отследить каждый шаг, найти ошибку и устранить ее.
Также можно воспользоваться полезным инструментом “Проверка ошибок”, который расположен в том же блоке.
Откроется окно, в котором будет описана причина ошибки, а также предложен ряд действий касательно нее, в т.ч. исправление в строке формул.
Заключение
Работа с формулами и функциями – одна из главных функциональных возможностей Excel, и, несомненно, одно из основных направлений использования программы. Поэтому очень важно знать, какие проблемы могут возникать при работе с формулами, и как их можно исправить.
#1
alsuper
-
- Пользователи
-
- 5 сообщений
Новичок
Отправлено 30 Октябрь 2006 — 02:12
с помощью импорта внешних данных с сайта получаю числовые данные. выходят они в таком формате 2,840.00 что означает 2840. Из-за последних трёх символов .00 невозможно вставить в формулу для автоматического расчёта. Как сделать либо автоматическое убирание этих символов, либо возможность расчёта данных чисел в формулах?
- Наверх
#2
DeBOBAHer
DeBOBAHer
- Город:)
- Интересы:SithAdmin
Отправлено 30 Октябрь 2006 — 02:42
Можно попытаться настроить формат чисел в Windows в региональных настройках.
Какой же русский не любит быстрой езды — бессмысленной и беспощадной!
Нет такой чистой и светлой мысли, которую бы русский человек не смог бы выразить в грязной матерной форме.
Еще никто так, как русские, не глушил рыбу! (в Тихом океане — да космической станцией!)
- Наверх
#3
joy
joy
- Город:МО
- Интересы:догадайтесь с трех раз… Вы знали!!!
Отправлено 30 Октябрь 2006 — 02:47
думаешь, поможет? он же выдирает это со странички в браузере. соответственно, как страничка сделана, так он и выдерет. или ты не это имел в виду?
«Что использовать чтобы огурцы ложкой банка майонеза.» ©bash.org.ru…
- Наверх
#4
megaforce
megaforce
-
- Пользователи
-
- 1 сообщений
Новичок
Отправлено 30 Октябрь 2006 — 02:55
Настройка — Панель управления — Языки и стандарты — Числа — Разделитель целой и дробной части числа
- Наверх
#5
v_user
Отправлено 30 Октябрь 2006 — 03:00
Настройка — Панель управления — Языки и стандарты — Числа — Разделитель целой и дробной части числа
<{POST_SNAPBACK}>
Да, можно так. Но это тогда коснется всех программ.
Думаю наилучшее написать скрипт преобразования на VBA ввиде функции (т.е. подсьавляется в форулу). А сам скрипт прост: берет значение как текст, перебирает по каждому символу, запятые просто выкидывает, а точку меняет на запятую. Все, вопрос решен.
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#6
v_user
Отправлено 30 Октябрь 2006 — 03:31
Вот, не поленился, написал.
Открой Ексел, запиши какой угодно макрос (главное чтоб он был). Теперь по <Alt><F11> открываешь окно VBA. Там найдешь раздел «Modules». В нем подраздел, по умолчанию «Module1». Открываешь этот подраздел. Там на VBA будет записан твой макрос. Нафиг стираешь его, а вместо него пишешь вот такой тест:
Public Function Convert_My(str As String) As Double Dim dl_str As Long, i As Long, tmp As String, z_ish As String, z_end As String, otvet As Double Convert_My = 0 On Error GoTo 11 z_end = "" ish = str dl_str = Len(ish) For i = 1 To dl_str tmp = Mid(ish, i, 1) If tmp = "," Then GoTo 23 If tmp = "." Then tmp = "," z_end = z_end & tmp 23 Next i otvet = z_end Convert_My = otvet 11 End Function
Сохраняешься. Теперь в итоговую ячеку прописываешь формулу, например =Convert_My(A5).
В ячейке А5 находится значение например 2,685.34, и функция будет возвращать в итоговую ячейку нормальной число 2685,34.
З.Ы. Подправил, ошибка была
Сообщение отредактировал v_user: 31 Октябрь 2006 — 03:35
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#7
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 30 Октябрь 2006 — 10:25
2 v_user
По-моему загон, и по-любому должныа быть возможность в эксель это настроить.
Здесь, например: Меню «Сервис»-«Параметры», вкладка «Международные». Убрать галочку «Использовать системные разделители» и поставить нужный «Разделитель дробной и целой части». По крайней мере данные можно импортировать, потом изменить формат на нужный и сохранить. А можно прямо так и работать.
Прикрепленные файлы
-
excel.png 8,63К
66 Количество загрузок:
Сообщение отредактировал ErV: 30 Октябрь 2006 — 10:27
ушел на Linux-ресурсы.
- Наверх
#8
v_user
Отправлено 31 Октябрь 2006 — 06:52
2 v_user
По-моему загон, и по-любому должныа быть возможность в эксель это настроить.Здесь, например: Меню «Сервис»-«Параметры», вкладка «Международные». Убрать галочку «Использовать системные разделители» и поставить нужный «Разделитель дробной и целой части». По крайней мере данные можно импортировать, потом изменить формат на нужный и сохранить. А можно прямо так и работать.
<{POST_SNAPBACK}>
Так в том-то и дело, что это коснется всего Эксель. Да сколько уже раз сталкивался что люди изменив запятую на точку уже получали невнятный гемор. Одну свою задачу решали (а это решение через кривые руки программера который даже экспорт/импорт организовать не может по человечески), но другие наживали.
Что ж, если такой подход удовлетворяет, то ради бога. Только вот разбираться в числах, где запятая — разделитель разрядов, а точка — есть «десятичная точка» (вместо соответсвенно пробела и запятой) — думаю «продвинотому» бухгалтеру/менеджеру будет не весело.
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#9
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 31 Октябрь 2006 — 03:24
Я просто думаю, что автор — не программер, это раз.
А следовательно, ему проще запомнить где галочка, чем весь твой скрипт. (без обид)
Переформатировал бы ты его, что ли… тут классный тэг есть — [code=auto:0]
читать удобнее, правда хайлайтинг и всякие загоны со шрифтами убивает.
ушел на Linux-ресурсы.
- Наверх
#10
v_user
Отправлено 31 Октябрь 2006 — 03:39
Я просто думаю, что автор — не программер, это раз.
А следовательно, ему проще запомнить где галочка, чем весь твой скрипт. (без обид)
Переформатировал бы ты его, что ли… тут классный тэг есть — [code=auto:0]
читать удобнее, правда хайлайтинг и всякие загоны со шрифтами убивает.<{POST_SNAPBACK}>
Да не, какие обиды.
Просто меня иногда нервируют программисты, которые делают что-то через одно место и/или не до конца. Очень часто это у них в превычке (они так начинали). Вот я и акцентировал на том, что если делать, то так чтоб работало, а не чтоб сперва настроить а уж потом работало.
Кстати, переделал, спс за подсказку про тэг. И кстати изложить посторался как программировать как для новиска.
Сообщение отредактировал v_user: 31 Октябрь 2006 — 03:41
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#11
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 31 Октябрь 2006 — 09:21
Ещё рекомендация.
Я когда информатикам задачи делал ради прикола ,
обнаружил, что если человек не знает инглиш, то знает транслит.
Можно изменить имена и ему все будет понятно (Кстати, если не ошибаюсь, по русски в офисе тоже можно программить).
И ещё: у тебя z_ish не используется, как я понял.
И зачем копировать str в ish?
Вот так например (не факт что не сломал, не тестил, по тексту должно работать):
Public Function StrokuVChislo(stroka As String) As Double Dim dlinaStroki As Long, positsiya As Long, curSimvol As String, strokaOtvet as String, otvet As Double otvet = 0; On Error GoTo 11 strokaOtvet = "" dlinaStroki = Len(stroka) For positsiya = 1 to dlinaStroki curSimvol = Mid(stroka, i, 1); if curSimvol = "," Then Goto 23 if curSimvol = "." Then curSimvol = "," strokaOtvet = strokaOtvet & curSimvol 23 Next i otvet = strokaOtvet 11 StrokuVChislo = otvet End Function
У меня сейчас диск с офисом грохнулся, нет документации по бейсику и влом. Если хош, могу переделать в более человеческий вид на досуге.
Сообщение отредактировал ErV: 31 Октябрь 2006 — 09:36
ушел на Linux-ресурсы.
- Наверх
#12
v_user
Отправлено 01 Ноябрь 2006 — 07:54
Все верно. Так и надо рисовать. Я писал на скоро рука в данном случае, но вообще название переменных стараюсь всегда продумывать. Но грешок ест — люблю короткие имена внутри отдельновзятой функции (все равно дальше функции они не уходят).
По поводу z_ish. В Экселе я на ВБА не пишу, я периодически работаю в Access. Понятно, что ВБА что для экселя, что для аксэса одинаково. Так вот. Столкнулся вот конкретно с каким глюком. Когды ты работаешь внутри функции с «входящими» переменными, то можешь нарваться на глюк необоснованной неправильной работы.
Public Function StrokuVChislo(stroka As String) As Double
Если внутри этой функции ты много раз вызовешь переменную «stroka», то этот глюк может вылезти. Но стоит в начале обявить внутренюю переменную, ей присвоить значение «stroka», то эту переменную хоть миллион раз используй — все будет работать как положено. Вот такой, блин, глюк. С тех пор, как я на него потратил целый день (пока въехал в чем дело), у меня уже в автомате никогда не использовать входящие переменные, а сразу передавать их значение внутренним переменным.
Да еще.
Public Function StrokuVChislo(stroka As String) As Double Dim dlinaStroki As Long, positsiya As Long, curSimvol As String, strokaOtvet as String, otvet As Double StrokuVChislo = 0; On Error GoTo 11 strokaOtvet = "" dlinaStroki = Len(stroka) For positsiya = 1 to dlinaStroki curSimvol = Mid(stroka, i, 1); if curSimvol = "," Then Goto 23 if curSimvol = "." Then curSimvol = "," strokaOtvet = strokaOtvet & curSimvol 23 Next i otvet = strokaOtvet StrokuVChislo = otvet 11 End Function
Я немного подправил твое. Я считаю (ИМХО) что после точки возврата по ошибке ничего быть не должно (или или должно, но только ссылка на другую точку возврата). Ведь ты же не знаешь что будет содержаться в otvet в момент ошибки…
Сообщение отредактировал v_user: 01 Ноябрь 2006 — 08:21
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#13
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 01 Ноябрь 2006 — 10:30
2v_user
в otvet в момент ошибки должен содержаться 0. Но только, если ошибка не произойдет во время присваиавания. (Тогда, по логике вещей, тоже должен быть ноль, но не уверен, признаюсь, момент упустил). Документации по VBA сейчас нет и я под него не пишу — просто по аналогии синтаксисов накатал. Так что думаю, что твой вариант живучей.
ушел на Linux-ресурсы.
- Наверх
#14
v_user
Отправлено 02 Ноябрь 2006 — 09:01
2v_user
в otvet в момент ошибки должен содержаться 0. Но только, если ошибка не произойдет во время присваиавания. (Тогда, по логике вещей, тоже должен быть ноль, но не уверен, признаюсь, момент упустил). Документации по VBA сейчас нет и я под него не пишу — просто по аналогии синтаксисов накатал. Так что думаю, что твой вариант живучей.<{POST_SNAPBACK}>
Все правильно. По идее должен быть ноль. Но:
— кто сказал что клюков не бывает у Микрософта?
— Это в данном случае так. Но часто бывает что приходится вносить изменения в код (особенно если он дастаточно большой), и в итоге ситуация меняется, а об действии после возврата по ошибке как-то забываешь. Сколько раз сам же на свои грабли наступал, теперь вот всегда этот момент контролирую (даже если и не надо, как в данном случае).
Кстати, еще. Нашел еще ошибочку у тебя. При объявлении переменных ты перешел на вторую строку. Просто так это нельзя делать, надо в конце первой строки после пробела добавить знак подчеркивания. (Да точки с запятой парачку в конце строки убрал).
Еще добавил вывод ошибки. Предпоследняя строка (здесь отремирована). Чтоб выводило — надо убрать апостроф.
Public Function StrokuVChislo(stroka As String) As Double Dim dlinaStroki As Long, positsiya As Long, curSimvol As String, _ strokaOtvet as String, otvet As Double StrokuVChislo = 0 On Error GoTo 11 strokaOtvet = "" dlinaStroki = Len(stroka) For positsiya = 1 to dlinaStroki curSimvol = Mid(stroka, positsiya, 1) if curSimvol = "," Then Goto 23 if curSimvol = "." Then curSimvol = "," strokaOtvet = strokaOtvet & curSimvol 23 Next positsiya otvet = strokaOtvet StrokuVChislo = otvet 11 'MsgBox Err.Description End Function
Короче вот этот проверил, работает.
Сообщение отредактировал v_user: 02 Ноябрь 2006 — 09:20
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#15
ErV
ErV
- Город:Воронеж
- Интересы:C++, coding, programming, 3d-programming, Game-development, OpenGL, DirectX.
Отправлено 02 Ноябрь 2006 — 09:29
Кстати, еще. Нашел еще ошибочку у тебя. При объявлении переменных ты перешел на вторую строку. Просто так это нельзя делать, надо в конце первой строки после пробела добавить знак подчеркивания. (Да точки с запятой парачку в конце строки убрал).
Это все уже автоматом сделано (рефлекс) — у меня основной язык C++. Соответственно, по тому и точки с запятой в конце строк, и подчерка нет.
ушел на Linux-ресурсы.
- Наверх
#16
v_user
Отправлено 02 Ноябрь 2006 — 09:42
Что-то автора темы не слышно, видать решил уже задачку сам как-то.
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#17
alsuper
alsuper
-
- Пользователи
-
- 5 сообщений
Новичок
Отправлено 02 Ноябрь 2006 — 10:13
Что-то автора темы не слышно, видать решил уже задачку сам как-то.
<{POST_SNAPBACK}>
О господа! Премного благодарен! так много ответов и не ожидал
я действительно не программер (хотя в школе на бейсике занял 2 место, но давно это было)), буду пытать разобраться в рекомендациях :-), об итогах напишу обязательно
данные берутся по ссылке http://www.lme.com/d…daily_metal.asp
импортируемые данные-верхняя таблица, и в середине правая (где курсы валют). Кстати с последней тоже косяк, необходимый мне курс евро отображаетсфя как дата (например сегодняшний курс 1.2755, в ячейке отображается как янв.55, а если посмотреть содержимое ячейки-01.01.2755)
Я знаю где-то в эксель есть что-то вроде отключения автоматического определения дат, но провозился час-неполучается найти где это.
- Наверх
#18
v_user
Отправлено 02 Ноябрь 2006 — 10:42
Ну тут думаю надо делать Эксел в два листа.
Первый — промежуточный. Туда все импортируется. Все импортируется как текст! Второй лист итоговый — то что видно в Итоге. Там просто настрены ссылки на данные первого листа.
Когда экспортируешь как текст — все данные будут в том виде, как на сайте. А потом через ссылки (используя предложенну здесь функцию) числа сайта переводишь в числа понятные Эксель.
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
#19
alsuper
alsuper
-
- Пользователи
-
- 5 сообщений
Новичок
Отправлено 02 Ноябрь 2006 — 12:52
Ну тут думаю надо делать Эксел в два листа.
Первый — промежуточный. Туда все импортируется. Все импортируется как текст! Второй лист итоговый — то что видно в Итоге. Там просто настрены ссылки на данные первого листа.
Когда экспортируешь как текст — все данные будут в том виде, как на сайте. А потом через ссылки (используя предложенну здесь функцию) числа сайта переводишь в числа понятные Эксель.<{POST_SNAPBACK}>
Неполучается у меня, проверьте порядок действий
Порядок действий
Записываю любой макрос
Сервис-макрос-начать запись-ок
Alt f11, modules-module 1-кликая 2раза, в окно вставляю последнюю программу написанную v user
Сохраняюсь
На другом листе в ячейку пишу
=Convert_My(имя ячейки)
Пишет ошибку, формула содержит нераспознанный текст
И ещё, курс евро импортируется с точкой 1.2755 , что тоже не понятно экселю, для этого случая другой макрос?
- Наверх
#20
v_user
Отправлено 02 Ноябрь 2006 — 02:59
Неполучается у меня, проверьте порядок действий
Порядок действий
Записываю любой макрос
Сервис-макрос-начать запись-ок
Alt f11, modules-module 1-кликая 2раза, в окно вставляю последнюю программу написанную v user
Сохраняюсь
На другом листе в ячейку пишу
=Convert_My(имя ячейки)Пишет ошибку, формула содержит нераспознанный текст
И ещё, курс евро импортируется с точкой 1.2755 , что тоже не понятно экселю, для этого случая другой макрос?<{POST_SNAPBACK}>
Если ты взял последнюю программу — то тогда не Convert_My, а StrokuVChislo (ErV ее переименовал, когда переписывал скрипт более понятно).
Это функция присутствует в списке. Т.е. когда вызываешь список стандартных функций, то среди там ОКРУЛ, СУММ, ЕСЛИ и т.д. будет еще и функция StrokuVChislo.
Сообщение отредактировал v_user: 02 Ноябрь 2006 — 03:01
Разве «Pentium M» — это мобильно? Вот «Тополь М» — это мобильно!
- Наверх
Ципихович Эндрю 1487 / 461 / 52 Регистрация: 10.04.2009 Сообщений: 7,903 |
||||
1 |
||||
Формула содержит не распознанный текст29.03.2014, 11:38. Показов 2244. Ответов 2 Метки нет (Все метки)
здравствуйте, подскажите почему я вижу сообщение «Формула содержит не распознанный текст»
Спасибо 0 |
15131 / 6405 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
29.03.2014, 11:45 |
2 |
Если .Formula, то имя функции SUM. 0 |
1487 / 461 / 52 Регистрация: 10.04.2009 Сообщений: 7,903 |
|
29.03.2014, 12:01 [ТС] |
3 |
Столбец_буквой = «В» Добавлено через 15 минут
Если .Formula, то имя функции SUM. точно, спасибо 0 |
Как мы все знаем, в основном используется MS Excel, известный своими функциями, формулами и макросами. Но что, если при написании формулы у нас возникают проблемы или мы не можем получить желаемый результат в ячейке, так как мы неправильно сформулировали функцию. Вот почему MS Excel предоставляет множество встроенных инструментов для аудита формул и устранения неполадок формул.
Инструменты, которые мы можем использовать для аудита и устранения неполадок формул в Excel:
- Прецеденты трассировки
- Следить за зависимыми
- Удалить стрелки
- Показать формулы
- Проверка ошибок
- Оценить формулу
Примеры инструментов аудита в Excel
Мы узнаем о каждом из вышеперечисленных инструментов аудита один за другим, используя несколько примеров в Excel.
Вы можете скачать этот шаблон Excel для инструментов аудита здесь — Шаблон Excel для инструментов аудита
# 1 — Отслеживание прецедентов
Предположим, у нас есть следующая формула в ячейке D2 для расчета процентов по счету FD в банке.
Если мы хотим проверить прецеденты формулы, мы можем нажать F2 для перехода в режим редактирования после выбора нужной ячейки так, чтобы ячейки прецедентов были окаймлены разными цветами и одного цвета, записывается ссылка на ячейку.
Мы видим, что A2 написано синим цветом в ячейке формулы, и этим же цветом выделена ячейка A2.
Таким же образом
Ячейка B2 имеет красный цвет.
Ячейка C2 имеет фиолетовый цвет.
Этот способ хорош, но у нас есть более удобный способ проверить прецеденты для ячейки формулы.
Чтобы отследить прецеденты, мы можем использовать ‘Следы прецедентов’ команда в ‘Формула аудита’ группа под ‘Формулы’ таб.
Нам нужно выбрать ячейку с формулой, а затем нажать на ‘Следы прецедентов’ команда. Затем вы увидите стрелку, как показано ниже.
Мы видим, что прецедентные ячейки выделены синими точками.
# 2 — Удалить стрелки
Чтобы удалить эти стрелки, мы можем использовать ‘Удалить стрелки’ команда в ‘Формульный аудит’ группа под ‘Формулы’ таб.
# 3 — Следить за зависимыми
Эта команда используется для отслеживания ячейки, которая зависит от выбранной ячейки.
Воспользуемся этой командой на примере.
Предположим, у нас есть четыре суммы, в которые мы можем инвестировать. Мы хотим знать, сколько процентов мы можем заработать, если будем инвестировать.
Мы можем видеть, что на изображении выше мы применили формулу для расчета процентов с суммой 1 и указанным процентом процентов и продолжительностью в году.
Мы скопируем формулу и вставим ее в соседние ячейки для суммы 2, суммы 3 и суммы 4. Можно заметить, что мы использовали абсолютную ссылку на ячейку для ячеек G2 и I2, поскольку мы не хотим изменять эти ссылки. при копировании и вставке.
Теперь, если мы хотим проверить, зависят ли какие ячейки от ячейки G2, мы будем использовать «Следить за зависимыми» команда доступна в ‘Формула аудита’ группа под ‘Формулы’ таб.
Выберите ячейку G2 и нажмите на «Следить за зависимыми» команда.
На изображении выше мы можем видеть линии со стрелками, где стрелки указывают, какие ячейки зависят от ячеек.
Теперь удалим линии со стрелками, используя ‘Удалить стрелки’ команда.
# 4 — Показать формулы
Мы можем использовать эту команду для отображения формул, написанных на листе Excel. Сочетание клавиш для этой команды: Ctrl + ~.
См. Изображение ниже, где мы можем видеть формулы в ячейке.
Мы видим, что вместо результатов формулы мы можем видеть формулу. Для сумм формат валюты не отображается.
Чтобы отключить этот режим, нажмите ‘Ctrl + ~’ еще раз или нажмите на ‘Показать формулы’ команда.
# 5 — Проверка ошибок
Эта команда используется для проверки ошибки в указанной формуле или функции.
Давайте рассмотрим пример, чтобы понять это.
См. Изображение ниже, где у нас есть ошибка в функции, примененной к результату.
Теперь, чтобы решить эту ошибку, мы будем использовать «Проверка ошибок» команда.
Шаги будут:
Выберите ячейку, в которой записана формула или функция, затем нажмите «Проверка ошибок».
Когда мы нажимаем на команду, мы получаем следующее диалоговое окно с заголовком «Проверка ошибок».
В приведенном выше диалоговом окне можно увидеть, что произошла некоторая ошибка недопустимого имени. Формула содержит нераспознанный текст.
Если мы используем функцию или построили формулу впервые, то мы можем нажать на ‘Помощь по этой ошибке’ Кнопка, которая откроет страницу справки для функции в браузере, где мы сможем просмотреть всю связанную информацию в Интернете, понять причину и найти все возможные решения.
Щелкнув сейчас по этой кнопке, мы обнаружим следующую страницу.
На этой странице мы узнаем об ошибке, которая возникает, когда
- Формула относится к имени, которое не было определено. Это означает, что имя функции или именованный диапазон ранее не были определены.
- В названии формулы есть опечатка. Это означает, что произошла опечатка.
Если мы использовали эту функцию ранее и знаем о ней, то мы можем нажать на ‘Показать шаги расчета’ кнопку, чтобы проверить, как оценка функции приводит к ошибке.
Если мы нажмем на эту кнопку, отобразятся следующие шаги:
- Следующее диалоговое окно отображается, когда мы нажимаем на ‘Показать шаги расчета’ кнопка.
- После нажатия на ‘Оценить’ кнопка, подчеркнутое выражение, т. е. «IIF,» оценивается и дает следующую информацию, отображаемую в диалоговом окне.
Как видно на изображении выше, ‘IIF’ Выражение оценивается как ошибка, то есть ‘#NAME?’. Теперь следующее выражение или ссылка, то есть B2, было подчеркнуто. Если мы нажмем на «Шаг внутрь» кнопку, то мы также можем проверить внутренние детали шага и выйти, нажав кнопку ‘Выйти’ кнопка.
- Теперь мы нажмем на ‘Оценить’ кнопку, чтобы проверить результат подчеркнутого выражения. После нажатия получаем следующий результат.
- После нажатия на ‘Оценить’ кнопку, получаем результат примененной функции.
- В результате мы получили ошибку, и, анализируя функцию шаг за шагом, мы узнали, что в IIF. Для этого мы можем использовать ‘Вставить функцию’ команда в ‘Библиотека функций’ группу на вкладке «Формулы».
Когда мы набирали ‘если,’ у нас в списке появилась аналогичная функция, нам нужно выбрать соответствующую функцию.
После выбора ‘Если’ функция, мы получаем следующее диалоговое окно с текстовыми полями для аргумента, и мы заполним все детали.
После нажатия на ‘Хорошо,’ получаем результат в ячейке. Мы скопируем функцию для всех студентов.
То, что нужно запомнить
- Если мы активируем команду «Показать формулы», даты также будут показаны в числовом формате.
- При оценке формулы мы также можем использовать F9 как ярлык в Excel.
УЗНАТЬ БОЛЬШЕ >>
Post Views: 1 518
На чтение 2 мин Опубликовано 29.05.2016
В этой статье мы расскажем о том, как справляться с некоторыми наиболее распространёнными ошибками формул в Excel.
Содержание
- Ошибка #####
- Ошибка #ИМЯ?
- Ошибка #ЗНАЧ!
- Ошибка #ДЕЛ/0!
- Ошибка #ССЫЛКА!
Ошибка #####
Появление в ячейке такого кода ошибки означает, что столбец недостаточно широк, чтобы отобразить значение полностью.
Наведите указатель мыши на правую границу столбца рядом с его заголовком (в нашем примере это столбец A), чтобы указатель принял вид, как на рисунке ниже. Нажмите левую кнопку мыши и перетащите границу столбца до нужной ширины.
Совет: Если дважды кликнуть по границе столбца A рядом с его заголовком, то ширина столбца автоматически изменится и будет соответствовать самой широкой ячейке столбца.
Ошибка #ИМЯ?
Ошибка #ИМЯ? (#NAME?) возникает в том случае, когда Excel не может распознать текст в формуле (например, из-за опечатки).
Просто исправьте SU на SUM.
Ошибка #ЗНАЧ!
Excel показывает сообщение об ошибке #ЗНАЧ! (#VALUE!) в том случае, когда для формулы введён аргумент не подходящего типа.
a) Измените значение в ячейке A3.
b) Используйте функцию, которая игнорирует ячейки, содержащие текст.
Ошибка #ДЕЛ/0!
Сообщение об ошибке #ДЕЛ/0! (#DIV/0!) появляется при попытке деления числа на ноль или на пустую ячейку.
a) Изменить значение в ячейке A2 на любое число, не равное нулю.
b) Предотвратите возникновение ошибки при помощи логической функции ЕСЛИ (IF).
Пояснение: Если ячейка A2 будет равна нулю, то значением ячейки A3 будет пустая строка. Если нет – то в ячейке A3 будет вычислен результат формулы =A1/A2.
Ошибка #ССЫЛКА!
Сообщение об ошибке #ССЫЛКА! (#REF!) говорит о том, что формула ссылается на ячейку, которая не существует.
- В ячейке C1 содержатся ссылки на ячейки A1 и B1.
- Удаляем столбец B. Для этого кликаем по заголовку столбца правой кнопкой и в контекстном меню нажимаем Удалить (Delete).
- Выделите ячейку B1. Ссылка на ячейку B1 в формуле превратилась в ссылку на несуществующую ячейку.
- Чтобы исправить эту ошибку, нужно либо удалить несуществующую ссылку в формуле, либо отменить действие, кликнув по иконке Отменить (Undo) на панели быстрого доступа (или нажать Ctrl+Z).
Оцените качество статьи. Нам важно ваше мнение:
Андрей Воронин
Просветленный
(21647),
закрыт
10 лет назад
Доброго времени суток. Помогите с проблемой. Начал изучать VBA. И на первом же примере простейший макрос не работает. Пишу такой код
Public Sub MySub()
Range(“А3”).Select
ActiveCell.Formula = “=СУММ (A1:A2)”
End Sub
Всё как в примере в книге. Перед выполнением макроса ввожу цифры в ячейки А1 и А2. И сумма в А3 не считается. Пишет “формула содержит нераспознанный текст”. Причём если в ячейке формулу прописать
=СУММ (A1:A2) то всё считается, а через макрос не работает. В чём проблема? ?
Максим Головченко
Профи
(941)
10 лет назад
У меня так получилось
Sub Макрос1()
‘
‘ Макрос1 Макрос
‘
Range(“B2”).Select
ActiveCell.FormulaR1C1 = “=SUM(R[-1]C[-1]:RC[-1])”
End Sub
В тех источниках по которым я учил написано, что нажимаешь на запись делаешь то, что тебе нужно, а потом смотришь на код который сгенерировался.
По моему просто в макросах программа не понимает росийский вариант названий формул. Нужно использовать английский. Например не “СРЗНАЧ” а ” AVERAGE”