Страницы: 1
RSS
Как выполнить замену с сохранением первого символа "0"
 
Всем добрый день. Помогите с огромной проблемой, постоянно работаю с большим массивом данных из которых мне надо удалять лишние символы приводя значения к числовому значению не содержащему точек, дефисов, запятых и т.д. Так как значений очень много (до 50000 строк) использую для этой цели функцию замены, указывая к примеру заменить "," на " " тем самым удаляя данный знак.
  А теперь вопрос Как при данной замене сделать так что бы не исчезал первый символ "0".
Как я понимаю при замене excel принимает все значения за числовые и по умолчанию  откидывает первый "0" если он является первым символом. Для меня это огромная проблема, т.к. до 30% значений у меня содержат "0" первым символом.
Попытки задать значениям столбцов (в которых будет происходить замена) любые существующие значения результата не приносят, при замене нули все-равно удаляются.  
 
Перед изменениями установите текстовый формат ячеек

Цитата
заменить "," на " " тем самым удаляя данный знак
Ошибаетесь, Вы запятую не удаляете, а заменяете на пробел. Удалять - это когда в ЗАМЕНИТЬ оставлять пустое поле.
 
Забыл добавить, я не самый опытный пользователь excel  и к сожалению макросами не владею. Если можно решение по  проще.  
 
1. Тут про макросы никто кроме Вас не говорил.
2. Чисел  с ведущими нулями в Экселе не бывает. Если впереди 0 - то это или строка (число текстом, которому впереди дописаны нули), или эти нули добавлены форматом, а само значение без нулей.
3. Про текстовый формат уже сказали, другой вариант - добавить перед каждым таким значением апостроф.
Изменено: Hugo - 06.04.2015 01:36:19
 
Про апостроф спасибо, приму во внимание, но мне надо получить числа без лишних знаков.
Поясню те значения с которыми я работаю это коды товаров, изменение или потеря хотя бы одного символа не приемлема. А к сожалению некоторые производители свои артикулы начинают как раз с нулей. поэтому моя задача просто убрать лишние знаки, ничего лишнего не добавляя. К примеру покажу одно из чисел  с которыми работаю: 0735.371.966 таких значений у меня может быть несколько тысяч, и при замене получается следующее 735371966 (первый знак потерян).
 
Да,замена превращает это "число" в число, даже при текстовом формате ячейки, беда...
Вариант - сперва добавить апостроф (например формулой рядом, затем скпировать значения назад), а уже затем убивать ненужное заменой. Ну или сразу в формуле убить все точки-запятые.
 
Попробуйте так: весь столбец выделить Ctrl+H Заменить . на пусто
Далее в новом столбце формула: =СЦЕПИТЬ("0";RC[-1])
 
смотря как потом используются эти данные.
в пустую ячейку формулу:
=СИМВОЛ(160)
копируете ячейку и вставляете в поле "заменить".
годится не во всех случаях.
 
Можно с помощью дополнительного столбца:
Код
=ПОДСТАВИТЬ(A1;".";"")

потом специальная вставка -> значения. Нули останутся
 
Цитата
Перед изменениями установите текстовый формат ячеек
И никак?
 
Я сталкивался с такой проблемой.
По своему её решал.
Но для того, чтоб понять, нужны примеры.
Покажите:
1) как выглядят не правильные ячейки.
2) Как они должны выглядеть.

Иначе, это как вилами по воде водить.
Желательно файл приложить, простенький, с примером.
 
Цитата
opracing написал:
Про апостроф спасибо, приму во внимание, но мне надо получить числа без лишних знаков.
Ещё раз - ЧИСЛО не может быть с ведущим нулём. Текст - пожалуйста.
 
webley дал наиболее предпочтительный в данном случае ответ на мой взгляд. Т.к. при Ctrl+H текст все равно будет преобразован в число автоматически и ведущие ноли будут потеряны.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
opracing написал: макросами не владею. Если можно решение по  проще
Все-таки предложу UDF, особых навыков не требует - нужно код добавить в стандартный модуль книги
Код
Function НОЛЬ(число As Variant)
    НОЛЬ = Replace(число, ",", "")
End Function
Согласие есть продукт при полном непротивлении сторон
 
Тогда можно макросом на выделенном диапазоне
Код
Sub SaveZero()
    Selection.Offset(, 1).NumberFormat = "@"
    For Each Cell In Selection
    Cell.Offset(, 1) = Replace(Cell.Value, ",", "")
    Next Cell
End Sub



 
Цитата
opracing написал:
0735.371.966 таких значений у меня может быть несколько тысяч, и при замене получается следующее 735371966 (первый знак потерян).
Есть 2 варианта: если из этого надо сделать строку, то либо апостраф '0735371966 либо формат ячеек - текст (см.выше). Если требуется оставить как число (зачем только???), то формат ячейки д.б. "0000000000". Тогда любое число будет содержать 10 цифр с ведущими 0-ми.
Неизлечимых болезней нет, есть неизлечимые люди.
 
Всем спасибо большое за ответы буду пробовать все предложенные версии и проверять их на применимость.
Для SanShiney пример того как должно выглядеть.  
Изменено: opracing - 06.04.2015 23:22:51
 
Sanja спасибо, пример который прислал работает, проверил. Но пока работает только для запятых, точки я так понимаю по аналогии можно как-то в формуле прописать?
С UDF никогда раньше не работал попробую разобраться.  
 
opracing, прекратите бездумное цитирование. Кнопка цитирования НЕ ДЛЯ ответа.
 
Цитата
opracing написал: точки можно как-то в формуле прописать?
можно
Код
Function НОЛЬ(число As Variant)
    НОЛЬ = Replace(Replace(число, ",", ""), ".", "")
End Function
Согласие есть продукт при полном непротивлении сторон
 
Или так (строку Delim продумайте сами):
Код
Function НОЛЬ(число As Variant)
 Dim Delim, Res as String
 Delim = ".,/-^:;"
 Res = число
 For I = 1 to Len(delim)
 Res = Replace(Res, MID(Delim, I, 1), "")
 Next I
 НОЛЬ = Res
End Function

Страницы: 1
Наверх