Страницы: 1
RSS
Найти данные, обрезать лишнее и подставить значек
 
Добрый всем вечер
Что то у меня никак не получается сделать в таблице, поиск данных, замену лишнего на символ, и обрезку оставшихся данных.
Пример для ясности прилагаю, у самого получилось сделать до обрезки, но когда поставляю ЛЕВСИМ 4 то почему то значение делается 0.
 
Формула правильно пишет, у вас ведь сначала идут :0,00% а уж в конце Вася. Как понял нужно после последнего двоеточия оставить 3 символа. Правильно?
 
Код
=ЕСЛИОШИБКА(":"&ПСТР(A1;НАЙТИ(СИМВОЛ(34);A1)+1;4);A1)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
вместо двоеточия может поставляться любой другой символ, я это делал функцией нати и заменить вот эту часть: 'Поставщик (cкидка из карточки фирмы: 0,00%, доставка из карточки фирмы: 0,00%) : "    на нужный символ(например %), а после подстановки значка нужно обрезать лишнее до 4х символов.

чтобы в итоге из: 'Поставщик (cкидка из карточки фирмы: 0,00%, доставка из карточки фирмы: 0,00%) : "химпроммаш" ,  ,  ,

получилось:  %хим
 
я так понял что у меня значение приводится к 0 из за того что исходные данные и окончательный результат находятся в одной и той же ячейке, но изменить ячейку окончательных данных не вариант
 
Или так
Код
=ЕСЛИОШИБКА(":"&ПСТР(A1;ПОИСК("""";A1)+1;4);A1)
если искать последнее двоеточие длинная получается формула такая
Код
=ЕСЛИОШИБКА(ПОДСТАВИТЬ(ПСТР(ПОДСТАВИТЬ(A1;": ";"|";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;":";"")));ПОИСК("|";ПОДСТАВИТЬ(A1;": ";"|";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;":";""))));6);"|""";":");A1)
Изменено: gling - 19.03.2015 20:43:01
 
я видать что то не так делаю, но когда вставляю формулу в ячейку мне пишет что обнаружена циклическая формула и делает значение 0.
все дело в том что исходные данные данные должны забираться с ячейки, а потом в эту же ячейку должен вставляться полученный результат.
 
Цитата
Александр Баимкин написал: а потом в эту же ячейку должен вставляться полученный результат.
Это и есть циклическая ))
 
а как сделать так чтобы она останавливалась после первого цикла, т.е нашла, подставила, обрезала лишнее и остановилась.
 
Нужно смотреть в сторону итераций. Но это очень нежелательный вариант...
 
а макросом реализовать это можно?
 
Думаю, что можно. Но я не очень понял принцип - обрезка нужна только там, где есть двоеточие?
 
Если правильно понял задачу:
Код
Sub Macro1()
Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        If Cells(i, 1) Like "*:*" Then
            Cells(i, 1) = ":" & Left(Split(Cells(i, 1), """")(1), 4)
        End If
    Next
End Sub



 
Вы поняли совершенно верно, Спасибо огромное!
Страницы: 1
Наверх