Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2012, 22:05   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию От числа удалить буквы

Всем Привет!!
Подскажите в макросе
a(i, 2) = Split(a(i, 2))(5)
получаю значение
МРЛ00000862
а мне надо
862
т. е удалить МРЛ
valerij вне форума Ответить с цитированием
Старый 31.01.2012, 22:54   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Код:
a = Int(Mid(a, 4))
motorway вне форума Ответить с цитированием
Старый 31.01.2012, 23:23   #3
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Вопрос не однозначен!!!
Надо удалить три первых буквы? Или три первых символа?
Если буквы, то с учётом регистра?
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 31.01.2012, 23:28   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Фейерверк вариантов http://www.planetaexcel.ru/forum.php?thread_id=32695
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 31.01.2012, 23:46   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Код:
a = Int(Mid(a, 4))
Я думал, что можно от Split(a(i, 2))(5) - Int(Mid(a, 4)) отнять чета, типа(красным), а вспомнил, что с массивами так нельзя.
Приведу весь, почти, код
Код:
a = Range(.Cells(strow + 1, 2), .Cells(endrow - 1, 5)).Value
     For i = 1 To UBound(a)
          If a(i, 4) <> "" Then
               a(i, 2) = Split(a(i, 2))(5)
           Else
               a(i, 2) = 0
          End If
      Next
 With ThisWorkbook.Sheets(1)
        .Range(.Cells(dov, 1), .Cells(dov + UBound(a) - 1, 4)).Value = a
 End With
Это буквы по крайней мере в течение года не меняются, они в формате как я показал.
В оригинале так, без кавычек:
"Реализация товаров и услуг № МРЛ00000862 от 03 01 2012"
все остальное удаляется.

Макрос работал для такого вида оригинала
"Реализация товаров и услуг № 295709 от 02 12 2011"
Остается, синим

Последний раз редактировалось valerij; 31.01.2012 в 23:52.
valerij вне форума Ответить с цитированием
Старый 01.02.2012, 00:19   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Лови Валера
Код:
    Public Function Kvitok(ByVal s) As Long'вдруг миллионами  булочки продавать будете

bRes = False
  Set RegExp = CreateObject("VBScript.RegExp")
  RegExp.Global = False
    RegExp.IgnoreCase = True
    RegExp.Pattern = "\d{8}"
    bRes = RegExp.test(s)
        If bRes Then
            Set oMatches = RegExp.Execute(s)
            Set oMatch = oMatches(0)
            Kvitok = oMatch
         Exit Function
        End If
      Kvitok = 0
    End Function

ff = Kvitok("Реализация товаров и услуг № МРЛ00000862 от 03 01 2012")

результат 862
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 01.02.2012 в 00:24.
doober вне форума Ответить с цитированием
Старый 01.02.2012, 00:37   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Лови Валера
Поймал!!!
Сереж, мне же надо что - то добавить к моему коду, я только его часть показал, там двойное открытие разных книг....

Как я твой пришлепну туды???
Может весь показать?
valerij вне форума Ответить с цитированием
Старый 01.02.2012, 00:54   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Валера, это отдельная функция никуда ее лепить в твой код не надо. положи в модуль и используй в своем коде одну строчку:
хх = Kvitok(cells(r,c))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.02.2012, 01:07   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
и используй в своем коде одну строчку:
хх = Kvitok(cells(r,c))
А куду, эту строчку вставить, в какое место моего кода?
Что такое r, c?
Сразу ошибка

Последний раз редактировалось valerij; 01.02.2012 в 01:14.
valerij вне форума Ответить с цитированием
Старый 01.02.2012, 01:21   #10
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

заменить строчку
Код:
a(i, 2) = Split(a(i, 2))(5)
на
Код:
a(i, 2) = Kvitok(a(i, 2))
RAN. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить слова, в которых буквы повторяются Artoo Помощь студентам 0 16.12.2011 22:09
Как удалить все буквы их ячеек и оставить № телефонов. Ppaa Microsoft Office Excel 14 05.07.2011 13:49
Удалить из слова вхождения первой буквы kniazkinP Помощь студентам 0 30.11.2010 12:27
не погу понять как удалить буквы из массссииива 7 Makee Общие вопросы C/C++ 3 08.03.2010 10:23
в тексте удалить слова начинающиеся с заданой буквы Ananim-Pbl6ak Паскаль, Turbo Pascal, PascalABC.NET 9 26.05.2009 16:39