Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Удалить определенный последний символ (если он есть)
 
При формировании таблицы получается столбец текстового формата примерно такого содержания:
412
10,3
11,
Мне нужно найти эти зловредные ячейки с запятой на конце и, соответственно, удалить запятые (только если они - последний символ).
Просто поиск и удаление запятых не подходит, как понимаете, поскольку в середине чисел запятые должны остаться
 
=ЕСЛИ(ПРАВБ(A2)=",";ЛЕВБ(A2;ДЛСТР(A2)-1;A2)
 
softsant, ну это даже я знаю =ЕСЛИ(ПРАВСИМВ(ячейка;1)=",";ЛЕВСИМВ(ячейка;ДЛСТР(ячейка)-1;ячейка)
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
И что с этими формулами делать?
Создавать дополнительный столбец, заполнять формулами, потом копировать, вставлять значения, удалять временный столбец, преобразовывать в текстовый формат...
Я думал,  может существует вариант поиска (Ctrl+F)  - символ запятой и какой-нибудь символ перевода/конца строки, например в Worde можно подставлять спецсимволы.
Или подскажите, как в макрос формулу записать, чтоб для всего столбца или всей таблицы сразу выполнить.
 
Цитата
softsant: И что с этими формулами делать?
вы как вопрос поставили, вам таки ответили
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Цитата
softsant написал:
Ctrl+F
Выделить пустую ячейку, Ctrl+C, выделить целевой столбец, специальная вставка, сложить
Каждому For свой Next
 
Пример файла приложите, или скажите в каком столбце находятся эти цифры
 
Можно ещё так:
Код
=ЛЕВБ(A2;ДЛСТР(A2)-(ПРАВБ(A2)=",")) 

*В зависимости от того, какой десятичный разделитель, может сработать:

Код
=--A2
Изменено: Светлый - 16 Сен 2019 12:12:12
 
Макросом. Двойку замените на номер нужного вам столбца.
Код
Sub test()
    For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
        If Right(Cells(i, 2), 1) = "," Then
           Cells(i, 2) = Replace(Cells(i, 2), ",", "")
        End If
    Next
End Sub
 
Цитата
Андрей_26: Cells(i, 2) = Replace(Cells(i, 2), ",", "")
не то (так вы ВСЕ запятые замените) — вот так тогда уж Cells(i, 2) = Left$(Cells(i, 2), Len(Cells(i, 2))-1)
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Андрей_26, так он удалит все запятые, как вариант
Код
Sub test()
    For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
        If Right(Cells(i, 2), 1) = "," Then
           Cells(i, 2) = Left(Cells(i, 2), Len(Cells(i, 2)) - 1)
        End If
    Next
End Sub
Каждому For свой Next
 
Цитата
Андрей_26 написал:
Макросом. Двойку замените на номер нужного вам столбца.
Спасибо. Cтолбец Е, только не с первой строки.
E5 - E10000 надо просканировать.
 
Код
Sub qq()
    [E5:E10000].Replace ",", "."
End Sub
 
RAN , здесь все запятые, а не только конечные
 
Код
Sub test()
    For i = 5 To 10000
        If Right(Cells(i, 5), 1) = "," Then
           Cells(i, 5) = Left(Cells(i, 5), Len(Cells(i, 5)) - 1)
        End If
    Next
End Sub
Изменено: buchlotnik - 16 Сен 2019 12:15:02
Каждому For свой Next
 
softsant, вы пробовали, или "думаете"?
 
ускоряемся  :D Для выделенной области (не более 1 столбца и 1 области)
Код
Sub test()
dim arr, r&

arr=Selection.Value2

    For r=1 to ubound(arr,1)
        If Right$(arr(r,1), 1) = "," Then arr(r,1) = Left$(arr(r,1), Len(arr(r,1)) - 1)
    Next r

Selection.Value2=arr
End Sub
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Jack Famous, buchlotnik проверьте.
softsant - код для  E5 - E10000 в файле )))
 
Цитата
RAN написал:
softsant , вы пробовали, или "думаете"?
Действительно, конечные запятые удалились...
Правда, серединные превратились в точки. Интересный эффект
Изменено: softsant - 16 Сен 2019 12:29:46
 
Андрей_26, я бы не стал доверять этому способу, а тем более МЕТОДУ Replace, как предлагает RAN, т.к. при использовании метода как минимум нужно указывать ВСЕ аргументы инструмента или будут использованы последние…
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Цитата
Андрей_26 написал:
проверьте.
см файл, я исходил из того, что
Цитата
softsant написал:
столбец текстового формата
Каждому For свой Next
 
Цитата
Jack Famous написал:  Андрей_26 , я бы не стал доверять этому способу...
Ну тут кому что нравится ))) По крайней мере для решения поставленной задачи он подходит.
 
Всё же непонятно. REPLACE заменяет все запятые на точки, почему пропадает точка в конце
 
buchlotnik я тоже исходил из того что "столбец текстового формата". И был конкретно приведен пример данных:
Цитата
softsant написал:
При формировании таблицы получается столбец текстового формата примерно такого содержания: 412 10,3 11,
нигде не сказано, что данные могут быть такие: 11,34,
Какова задача - такое и решение ))))
 
Тот же эффект получен без макроса путем стандартного поиска/замены.
Заменяю в столбце все запятые на точки - пропадают последние.
Потом все точки на запятые - нужный результат.

Но конечно надежней "нормальный" макрос  :)  
Изменено: softsant - 16 Сен 2019 12:57:03
Страницы: 1
Читают тему (гостей: 1)
Наверх