Страницы: 1
RSS
Как автоматически вставить знак процена после числа в тексте?
 
Помогите, пожалуйста, с алгоритмом.  
 
Есть задача, превратить такие данные: "70 хлопок, 10 полиэстер, 10 ацетат, 10 вискоза" в такие: "70% хлопок, 10% полиэстер, 10% ацетат, 10% вискоза"  
 
Хочется написать универсальный макрос для такой задачи, но у меня не визуализируется алгоритм по ее решению.  
 
Бывает, что данные выглядят так: "70хлопок,10полиэстер,10ацетат,10вискоза", так что к пробелам привязаться не получается...  
 
Может у вас возникнут какие-то идеи.  
Заранее благодарю!
 
ctrl+h  Заменить "0" на "0% "
Я сам - дурнее всякого примера! ...
 
А ведь был уже именно такой вопрос. Давно, но был.
 
{quote}{login=Юрий М}{date=03.08.2012 11:46}{thema=}{post}А ведь был уже именно такой вопрос. Давно, но был.{/post}{/quote}  
 
Я совершенно честно воспользовалась поиском... Не находила...
 
{quote}{login=KukLP}{date=03.08.2012 11:35}{thema=}{post}ctrl+h  Заменить "0" на "0% "{/post}{/quote}  
 
=)))  
нда... ну и пример я привела, для него, конечно, подходящее решение ))  
 
Числа могут быть совершенно разными "35 хлопок, 35 ацетат, 30 рами"
 
Библиотечная крыса, Вам решение подошло?
Я сам - дурнее всякого примера! ...
 
"35 хлопок, 35 ацетат, 30 рами" - это одна строка или всё в разных ячейках?
 
Слово для поиска - вискоза!
 
Тогда надо делать на regexp. Давайте пример.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KukLP}{date=03.08.2012 11:51}{thema=}{post}Библиотечная крыса, Вам решение подошло?{/post}{/quote}  
 
К сожалению - нет =((  
 
{quote}{login=Юрий М}{date=03.08.2012 11:51}{thema=}{post}"35 хлопок, 35 ацетат, 30 рами" - это одна строка или всё в разных ячейках?{/post}{/quote}  
 
Это тысчи ячеек с разными составами. В одном столбце.
 
{quote}{login=KukLP}{date=03.08.2012 11:57}{thema=}{post}Тогда надо делать на regexp. Давайте пример.{/post}{/quote}  
 
Во вложении маленький пример
 
Первая попытка использования regexp:  
Public Sub www()  
   Dim oM As Object, c As Range, v  
   With CreateObject("VBScript.RegExp")  
       .Pattern = "\d\D"  
       .Global = True  
       For Each c In UsedRange.Cells  
           Set oM = .Execute(c.Value)  
           For Each v In oM  
               c.Value = Application.Trim(Replace(c.Value, v.Value, Left(v.Value, 1) & "% " & Right(v.Value, 1)))  
           Next  
       Next  
   End With  
End Sub
Я сам - дурнее всякого примера! ...
 
%)  
К своему стыду, не знаю что и делать с этим набором файлов. Это выходит за рамки моих знаний в VBA ((
 
Серега, а ты чего повадился файлы в кривом формате выкладывать? Они с форума открываться не хотят!
 
Я повадился... Какую версию Экса подсунули, в такой и вернул:-) Не надо открывать щелчком. ПКМ - сохранить на диск.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KukLP}{date=03.08.2012 01:40}{thema=}{post}... Не надо открывать щелчком. ПКМ - сохранить на диск.{/post}{/quote}  
Не всегда однозначно, если на Трайдент'е (Ишак, например) - и открывает, и качает... Словом, нужна пристрелка "маузеров"... ;) -84002-
 
Супер!!! Красиво работает. Жалко, конечно, что не сама сделала.  
Сергей, спасибо большое!
 
зайти в VBA  
Insert-Module (Вставить-Модуль)  
внутрь модуля запихнуть следующий код  
 
Function percent(ByVal stroka As String)  
  st = stroka  
  For i = 1 To Len(st) - 1  
     v1 = Mid(st, i, 1)  
     v2 = Mid(st, i + 1, 1)  
     If IsNumeric(v1) = True And IsNumeric(v2) = False Then  
        St_l = Left(st, i) & "%"  
        St_r = Right(st, Len(st) - i)  
        st = St_l & St_r  
     End If  
  Next  
  percent = st  
End Function  
 
после этого в ячейку B1 вставляете как формулу =percent(А1)  
потом протягиваете формулу.
 
{quote}{login=schetovod}{date=03.08.2012 02:19}{thema=}{post}зайти в VBA  
Insert-Module (Вставить-Модуль)  
внутрь модуля запихнуть следующий код  
 
после этого в ячейку B1 вставляете как формулу =percent(А1)  
потом протягиваете формулу.{/post}{/quote}  
 
Отличная функция получилась! Просто клад для меня.  
По четным дням буду пользоваться кнопкой Сергея, по нечетным вашей функцией.  
Благодарю вас! ))))))))
 
нечетных больше. моя будет чаше, ура! :))  
всегда пожалуйста :)
 
Можно по рабоче-крестьянскому:скопировать в WORD (поиск-замена),потом назад-в EXCEL
O Tempora, O Mores!!!
 
Улучшенный вариант не исправит числа, где уже есть %.
Я сам - дурнее всякого примера! ...
Страницы: 1
Наверх