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

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

Код
=--A2
Изменено: Светлый - 16.09.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
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Андрей_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.09.2019 12:15:02
Соблюдение правил форума не освобождает от модераторского произвола
 
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.09.2019 12:29:46
 
Андрей_26, я бы не стал доверять этому способу, а тем более МЕТОДУ Replace, как предлагает RAN, т.к. при использовании метода как минимум нужно указывать ВСЕ аргументы инструмента или будут использованы последние…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Андрей_26 написал:
проверьте.
см файл, я исходил из того, что
Цитата
softsant написал:
столбец текстового формата
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Jack Famous написал:  Андрей_26 , я бы не стал доверять этому способу...
Ну тут кому что нравится ))) По крайней мере для решения поставленной задачи он подходит.
 
Всё же непонятно. REPLACE заменяет все запятые на точки, почему пропадает точка в конце
 
buchlotnik я тоже исходил из того что "столбец текстового формата". И был конкретно приведен пример данных:
Цитата
softsant написал:
При формировании таблицы получается столбец текстового формата примерно такого содержания: 412 10,3 11,
нигде не сказано, что данные могут быть такие: 11,34,
Какова задача - такое и решение ))))
 
Тот же эффект получен без макроса путем стандартного поиска/замены.
Заменяю в столбце все запятые на точки - пропадают последние.
Потом все точки на запятые - нужный результат.

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