Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/удаление символов средствами vba - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
удаление символов средствами vba
DreOne Дата: Четверг, 10.12.2015, 18:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте!
Возникла проблема удаления символов.
С 1С выгружаются номера счетов в столбце А такого типа:
0000-001578
0000-001579
0000-000875
0000-000790

Как кодом убрать символы слева до знака "-", включая этот знак и убрать нули, чтобы остались номера 1578,1579,875,790?
Заранее спасибо.


Саморазвитие - это всё...
 
Ответить
СообщениеЗдравствуйте!
Возникла проблема удаления символов.
С 1С выгружаются номера счетов в столбце А такого типа:
0000-001578
0000-001579
0000-000875
0000-000790

Как кодом убрать символы слева до знака "-", включая этот знак и убрать нули, чтобы остались номера 1578,1579,875,790?
Заранее спасибо.

Автор - DreOne
Дата добавления - 10.12.2015 в 18:14
_Boroda_ Дата: Четверг, 10.12.2015, 18:23 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16702
Репутация: 6499 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Обязательно кодом?
Выделяете столбец А, жмете Контрл h, в найти "*-" без кавычек (звездочка тире), в заменить на - ничего.
Это всё можно макрорекодером записать


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеОбязательно кодом?
Выделяете столбец А, жмете Контрл h, в найти "*-" без кавычек (звездочка тире), в заменить на - ничего.
Это всё можно макрорекодером записать

Автор - _Boroda_
Дата добавления - 10.12.2015 в 18:23
DreOne Дата: Четверг, 10.12.2015, 18:29 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да, так как это только часть всей задачи, для заполнения в дальнейшем бланка счетов.


Саморазвитие - это всё...
 
Ответить
СообщениеДа, так как это только часть всей задачи, для заполнения в дальнейшем бланка счетов.

Автор - DreOne
Дата добавления - 10.12.2015 в 18:29
abtextime Дата: Четверг, 10.12.2015, 18:31 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
Еще вариант, не знаю проще или нет - через Данные - Текст по столбцам, разделитель "-" или по ширине
 
Ответить
СообщениеЕще вариант, не знаю проще или нет - через Данные - Текст по столбцам, разделитель "-" или по ширине

Автор - abtextime
Дата добавления - 10.12.2015 в 18:31
_Boroda_ Дата: Четверг, 10.12.2015, 18:32 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16702
Репутация: 6499 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub Макрос1()
    Columns("A:A").Replace What:="*-", Replacement:=""
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub Макрос1()
    Columns("A:A").Replace What:="*-", Replacement:=""
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 10.12.2015 в 18:32
DreOne Дата: Четверг, 10.12.2015, 18:39 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Sub Макрос1()
Columns("A:A").Replace What:="*-", Replacement:=""
End Sub


Спасибо огромное, работает, супер)


Саморазвитие - это всё...
 
Ответить
Сообщение
Sub Макрос1()
Columns("A:A").Replace What:="*-", Replacement:=""
End Sub


Спасибо огромное, работает, супер)

Автор - DreOne
Дата добавления - 10.12.2015 в 18:39
abtextime Дата: Четверг, 10.12.2015, 18:39 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
Не тестировал

[vba]
Код
Public Function Clean(S As String) As String

Clean = ""
Founded = False

For i = 1 To Len(S)
    If Founded Or (Mid(S, i, 1) <> "0" And Mid(S, i, 1) <> "-") Then
        Clean = Clean & Mid(S, i, 1)
        Founded = True
    End If
Next i

End Function
[/vba]
 
Ответить
СообщениеНе тестировал

[vba]
Код
Public Function Clean(S As String) As String

Clean = ""
Founded = False

For i = 1 To Len(S)
    If Founded Or (Mid(S, i, 1) <> "0" And Mid(S, i, 1) <> "-") Then
        Clean = Clean & Mid(S, i, 1)
        Founded = True
    End If
Next i

End Function
[/vba]

Автор - abtextime
Дата добавления - 10.12.2015 в 18:39
RAN Дата: Четверг, 10.12.2015, 19:30 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
abtextime, Назвать функцию именем существующего метода - это найти приключения на свою... (ну, вы в курсе)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениеabtextime, Назвать функцию именем существующего метода - это найти приключения на свою... (ну, вы в курсе)

Автор - RAN
Дата добавления - 10.12.2015 в 19:30
Kuzmich Дата: Четверг, 10.12.2015, 19:49 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
UDF
[vba]
Код

Function Удаление(cell As Range) As String
  Удаление = Split(cell, "-")(1)
End Function
[/vba]
 
Ответить
СообщениеUDF
[vba]
Код

Function Удаление(cell As Range) As String
  Удаление = Split(cell, "-")(1)
End Function
[/vba]

Автор - Kuzmich
Дата добавления - 10.12.2015 в 19:49
abtextime Дата: Четверг, 10.12.2015, 22:18 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
RAN, начал изучать VBA месяц назад, простите великодушно )
 
Ответить
СообщениеRAN, начал изучать VBA месяц назад, простите великодушно )

Автор - abtextime
Дата добавления - 10.12.2015 в 22:18
sv2014 Дата: Четверг, 10.12.2015, 22:25 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
DreOne, добрый вечер,вариант для файл-примера с функцией yyy в столбце C

[vba]
Код
Function yyy%(t$)
    With CreateObject("VBScript.RegExp"): .Pattern = "0000\-0{2,3}"
       yyy = .Replace(t, "")
    End With
End Function
[/vba]
К сообщению приложен файл: example_10_12_2.xls (36.0 Kb)


Сообщение отредактировал sv2014 - Четверг, 10.12.2015, 22:29
 
Ответить
СообщениеDreOne, добрый вечер,вариант для файл-примера с функцией yyy в столбце C

[vba]
Код
Function yyy%(t$)
    With CreateObject("VBScript.RegExp"): .Pattern = "0000\-0{2,3}"
       yyy = .Replace(t, "")
    End With
End Function
[/vba]

Автор - sv2014
Дата добавления - 10.12.2015 в 22:25
sv2014 Дата: Четверг, 10.12.2015, 22:52 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
DreOne, добавлю еще функцию zzz в столбец D,преимущество таких функций простота

[vba]
Код
Function zzz%(t$)
    Dim j%
   For j = 1 To Len(t)
     If Mid(t, j, 1) Like "[1-9]" Then zzz = Mid(t, j): Exit Function
   Next
End Function
[/vba]
К сообщению приложен файл: 7357533.xls (36.5 Kb)
 
Ответить
СообщениеDreOne, добавлю еще функцию zzz в столбец D,преимущество таких функций простота

[vba]
Код
Function zzz%(t$)
    Dim j%
   For j = 1 To Len(t)
     If Mid(t, j, 1) Like "[1-9]" Then zzz = Mid(t, j): Exit Function
   Next
End Function
[/vba]

Автор - sv2014
Дата добавления - 10.12.2015 в 22:52
DreOne Дата: Пятница, 11.12.2015, 09:38 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо огромное Вам всем,
добавлю еще функцию zzz в столбец D,преимущество таких функций простота

с этим я вообще не силен, первый ответ проще для моего понимания, но и к этому постараюсь придти в скором времени.


Саморазвитие - это всё...
 
Ответить
СообщениеСпасибо огромное Вам всем,
добавлю еще функцию zzz в столбец D,преимущество таких функций простота

с этим я вообще не силен, первый ответ проще для моего понимания, но и к этому постараюсь придти в скором времени.

Автор - DreOne
Дата добавления - 11.12.2015 в 09:38
Wasilich Дата: Пятница, 11.12.2015, 12:01 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
А еще так можно
[vba]
Код
Sub WWW()
  Range("A:A").Replace "-", "", xlPart
End Sub
[/vba]
 
Ответить
СообщениеА еще так можно
[vba]
Код
Sub WWW()
  Range("A:A").Replace "-", "", xlPart
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 11.12.2015 в 12:01
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!