Excel: оставить в ячейке только цифры

bonfire

Как очистить ячейку таким образом:
была ячейка "134,45АКЦИЯ"
нужно получить ячейку "134,4" То есть удалить все буквы в ячейке, а число оставить без изменений.?

seregaohota

Ботай Cell.Value в хелпе визуал бейсика. Или ActiveCell.Value ну что-то в этом роде, давно было, не помню. Дальше как string можно посимвольно разобрать и выкинуть не цифры и +-. Потом переприсвой ActiveCell.Value.
Если цифры шли не подряд типа "5и6веник, хватит 3.14159здеть", то гемор.

bonfire

А можешь немного поподробнее плиз!

bonfire

!

griz_a

Есть функция InStr, находит номер первой встречи подстроки, начиная с i-ого
Есть функция Mid, позволяет вырезать из строки подстроку.
Находишь ту цифру, которая встречается первой в твоей стартовой строке s, записываешь её в новую строковую переменную s1, отрезаешь от s начало до этой цифры включительно, то же самое, новую цифру приписываешь к s1 и далее аналогично, пока не кончатся цифры в s

wolf-cub

в русском экселе так
=ЛЕВСИМВ(A89;6)
т.е в ячейке A89 оставляет 6 левых символов.

griz_a

В макросах команды не русифицируются. Русифицировать VisualBasic - странная идея

a7137928

Да можно вообще по-тупому, по букве отрезать
'src-исходная строка
dest="" 'пустая строка, куда будем посимвольно записывать результат
i=1
while i<=len(src) 'src-это исходная строка
curchar=mid(src,i,1) 'вырезали i-ю букву
if asc(curchar)<=asc("9") and asc(curchar)>=asc("0") then 'ура, это цифра
dest=dest & curchar
end if
i=i+1
wend
Как-то так.

a7137928

В макросах команды не русифицируются. Русифицировать VisualBasic - странная идея
Да не в этом дело вообще, ты чё-то очень странное написал.
Фишка в том, что ЛЕВСИМВ ПРАВСИМВ - это функции рабочего листа (worksheet functions те же самые, которые в английском называются LEFT и RIGHT
В бейсике этих функций просто нет. Не в русских буквах дело, там тупо нету таких функций в языке.
В бейсике есть свои простенькие функции работы со строками (len, mid, chr и т.д. с ними и надо возиться. Если совсем невмоготу, и хочется воспользоваться гораздо более мощными и развитыми функциями рабочего листа, можно написать Application.WorksheetFunction или как-то так. Синтаксис не помню. Но эта штуковина в русскоязычном экселе у меня не работала. Хотя потом я вроде видел, люди писали, что этот метод и в русскоязычном экселе пашет, только надо имя функции правильное использовать.

wolf-cub

а если записать макрос с помощью ЛЕВСИМВ?

Dariana

Данил, эти функции в экселевском VBA есть;)

a7137928

Сцуко! Ты прав однако, я позорное ламо. left-right есть... офигеть, даже trim три вида, оказывается, есть! Фактически нету только поиска подстроки в строке.

a7137928

а если записать макрос с помощью ЛЕВСИМВ?
Не вполне понимаю, как ты собираешься использовать ЛЕВСИМВ. Это функция рабочего листа, т.е. тебе нужно две ячейки, в одной что-то написано, а в другой стоит формула, использующая ЛЕВСИМВ (или другие функции). Но зачем нам в макросе какие-то дополнительные ячейки заполнять какими-то функциями, если мы просто можем пройти по столбцу и в каждой ячейке тупо сделать то что нам надо, без привлечения дополнительных ячеек?

wolf-cub

да, конечно. Но это просто тупой метод, быстрый.
Оставить комментарий
Имя или ник:
Комментарий: