Элементарный вопрос, но я уже второй день не могу его решить :)
Задача: в ячейке A1 находится текст 4.9 GHz (возможен, но маловероятен, вариант с запятой: 4,9 GHz) в соседней ячейке при помощи формулы надо получить число 4,9
Какую формулу написать? Уже десяток вариантов перепробовал - ничего не выходит...
Пробовал и такую формулу: =ЗНАЧЕН(ЛЕВСИМВ(ПОДСТАВИТЬ(A1;",";".");ПОИСК(" ";A1))) но она работает некорректно (Проверял в Excel 2003 и 2007): на предпоследнем шаге вычислений мы получаем =ЗНАЧЕНИЕ("5.2 ") а потом при вставке этого значения в ячейку оно автоматически преобразовывается в дату (её числовое значение)
Есть ли возможность использовать какую-то совсем простую формулу типа =Ч(A1)?
Дело в том, что я делаю прайс, который должен работать во всех версиях и локализациях Excel и с разными десятичными разделителями в настройках Excel...
Макросом я сделал бы это за секунду, но тут нужна именно формула.
Я в свободную ячейку (пусть А1) вводил текст "1,2", затем значен(А1) проверял на ошибку, в зависимости от результата разная формула подставить() - то ли точку на запятую то ли запятую на точку. т.е. нужно до преобразования определить десятичный разделитель. Сейчас еще формулу придумал, чуть короче =ЕЧИСЛО(A1+0) при разделителе запятая дает истину, при точке ложь.
{quote}{login=EducatedFool}{date=09.10.2009 12:40}{thema=преобразовать текст в число (при помощи формулы)}{post} Задача: в ячейке A1 находится текст 4.9 GHz (возможен, но маловероятен, вариант с запятой: 4,9 GHz) в соседней ячейке при помощи формулы надо получить число 4,9... {/post}{/quote} Вариант,если правильно понял: "=ПСТР(B2;1;3)", затем число, 1 знак после... (XL-2003 SP3).
{quote}{login=Лузер™}{date=09.10.2009 01:00}{thema=}{post} т.е. нужно до преобразования определить десятичный разделитель. {/post}{/quote}
Тоже вариант, но формула получается длинная...
По сути, задача-то простейшая. Неужели нет универсального варианта? Изначально, как мне кажется, лучше заменить в тексте точку на запятую (или наоборот). А вот что делать дальше? Файл будет распространяться за рубежом по многим странам. Какие там параметры у Excel, я даже предположить не могу.
В данном конкретном случае я, конечно, могу в результат взять первый & третий символы строки - результат будет достигнут. Просто теперь интересует принципиальная возможность формулами получить требуемое число.
Ладно, пока все числа имеют вид #.# Ghz А если попадутся строки вида # Ghz или #.#№ Ghz...
Еще можно наоборот Ввести число 1,2 и получать разделитель формулой ПСТР(ТЕКСТ(A1;"@");2;1) Ваша формула: =ЗНАЧЕН(ЛЕВСИМВ(ПОДСТАВИТЬ(A1;".";ПСТР(ТЕКСТ(A4;"@");2;1));ПОИСК(" ";A1))) в А1 4.9 GHz (с точкой) в А4 число 1,2
И надо бы определиться "4.9 GHz" или "4,9 GHz"? Если может быть по разному, то с помощью ПСТР() пытаться вытащить символ разделителя. Вдруг он всегда второй?
{quote}{login=Лузер™}{date=09.10.2009 01:18}{thema=}{post} И надо бы определиться "4.9 GHz" или "4,9 GHz"? Если может быть по разному, то с помощью ПСТР() пытаться вытащить символ разделителя. Вдруг он всегда второй?{/post}{/quote} Определиться не получится - файл будут заполнять менеджеры, которые могут написать что угодно.
Разделителя может не быть вообще - может быть написано 6 Ghz или 12 Ghz
PS: Надеюсь, в других странах не используются другие десятичные разделители (кроме точки и запятой)...{/post}{/quote}Я бы все-таки определял разделитель ... Можно даже именем.
{quote}{login=KL}{date=10.10.2009 02:25}{thema=}{post}или еще короче:
=ПРОСМОТР(9E+307;--ПОДСТАВИТЬ(ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1);{",";"."};{".";","})){/post}{/quote} А если в качестве разделителя не точка и не запятая? :-) Экзотика, конечно, но приходилось сталкиваться с использованием тире или знака равно, а теоретически ведь могут быть и другие символы, если в Сервис - Параметры - Международные использован не системный разделитель.
Кстати, Кирилл, с учетом Ваших лингвистических знаний - не знакомы ли Вам отличные от точки и запятой разделители десятичных разрядов, общепринятые для каких-нибудь языков или стран?
{quote}{login=ZVI}{date=10.10.2009 03:05}{thema=Re: }{post}А если в качестве разделителя не точка и не запятая? :-) Экзотика, конечно, но приходилось сталкиваться с использованием тире или знака равно, а теоретически ведь могут быть и другие символы, если в Сервис - Параметры - Международные использован не системный разделитель.
Кстати, Кирилл, с учетом Ваших лингвистических знаний - не знакомы ли Вам отличные от точки и запятой разделители десятичных разрядов, общепринятые для каких-нибудь языков или стран?{/post}{/quote} Если честно, то лично я ничего подобного не встречал. Насколько мне известно, даже в японском Excel десятичный разделитель - точка. Теоретически существуют другие разделители и цифры (в том же японском или арабском), но для них в Excel нет локали. И хотя конечно же возможно, что пользователь поставил другой символ, я бы наверное пренебрег такой вероятностью в общем случае :-)
Спасибо за инфо, Кирилл. О маловероятности экзотики замечание справедливое. Меня смущало, что в датах того же японского в качестве разделителя могут использоваться и иероглифы: Формат ячейки – Дата – Язык: японский или корейский или китайский – список форматов в листбоксе Тип. И хотя для чисел там нет выбора языковых вариантов, но в то же время ограничений на использование несистемного разделителя почему-то нет. Этой свободой иногда пользуются для выходных (распечатываемых) форм бухгалтерских или финансовых документов, программно устанавливая иной разделитель. Но у Игоря, конечно же, не такой случай :-)