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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2016, 15:27   #1
optimi
 
Регистрация: 29.07.2016
Сообщений: 4
По умолчанию Удаление лишних символов

Здравствуйте!

Возможно ли убрать лишние символы в столбце А так, чтобы остались только цифры (как в столбце D)?

Лишние символы - скобки, дефисы, пробелы.

во вложении файл для примера.

Видел подобные вопросы. Но для моего файла решения не подошли.
Вложения
Тип файла: xlsx Лишние символы.xlsx (8.2 Кб, 14 просмотров)
optimi вне форума Ответить с цитированием
Старый 31.07.2016, 17:35   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Public Function ТолькоЦифра(смесь As String)
Dim i As Long
For i = 1 To Len(смесь)
Select Case Asc(Mid(смесь, i, 1))
Case 48 To 57
ТолькоЦифра = ТолькоЦифра & Mid(смесь, i, 1)
End Select
Next
ТолькоЦифра = Val(ТолькоЦифра)
End Function
Код:
Public Function onlyDigits(смесь As String)
    Dim objRegExp As Object
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Global = True
    objRegExp.Pattern = "[^0-9]"
    onlyDigits = objRegExp.Replace(смесь, "")
End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 31.07.2016 в 17:44.
Aleksandr H. вне форума Ответить с цитированием
Старый 01.08.2016, 00:20   #3
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добрый вечер,еще вариант функции uuu в столбце G

Код:
Function uuu(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "\D+": .Global = True
    uuu = .Replace(t, "")
 End With
End Function
Вложения
Тип файла: xls example_1_08_2016_prog_digits.xls (32.5 Кб, 13 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 01.08.2016, 00:34   #4
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

optimi,еще вариант функции uuu1 в столбце K без регулярок

Код:
Function uuu1(t$)
    Dim i&
 For i = 1 To Len(t)
    If IsNumeric(Mid(t, i, 1)) Then uuu1 = uuu1 & Mid(t, i, 1)
 Next
End Function
Вложения
Тип файла: xls example_1_08_2016_prog_digits1.xls (34.5 Кб, 10 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 01.08.2016, 07:08   #5
optimi
 
Регистрация: 29.07.2016
Сообщений: 4
По умолчанию Файлик

Спасибо, Aleksandr H., svsh2016, но я не могу использовать эти коды записях макросов.

Если возможно, пропишите эти коды в нужном месте в файле "Лишние символы во вложении.
Вложения
Тип файла: xlsx Лишние символы.xlsx (12.5 Кб, 13 просмотров)
optimi вне форума Ответить с цитированием
Старый 01.08.2016, 09:39   #6
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добрый день,добавил Вам кнопки test( макрос вводит все формулы) и кнопка очистка.

Код:
Sub test()
    Dim i1&
    Application.Calculation = -4135
    i1 = Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row
    Range("B1:B" & i1).Formula = "=uuu(A1)"
    Range("C1:C" & i1).Formula = "=uuu1(A1)"
    Application.Calculation = -4105
End Sub
Вложения
Тип файла: xls Лишние символы (1).xls (49.5 Кб, 24 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 01.08.2016, 10:19   #7
optimi
 
Регистрация: 29.07.2016
Сообщений: 4
По умолчанию спасибки!

svsh2016,

очень благодарен. макрос подходит и к другим похожим файлам. теперь то что занимало часа 2, занимает секунд 30. это очень и очень хорошо
optimi вне форума Ответить с цитированием
Старый 02.08.2016, 06:58   #8
optimi
 
Регистрация: 29.07.2016
Сообщений: 4
По умолчанию

В общем, рано я обрадовался, так как на следующем этапе произошел сбой.

Теперь, в рабочем файле в листе "удаление" есть очищенный от лишних символов столбец с цифрами. Этот столбец я с помощью специальной вставки я перенес в лист "сверка", убрал зеленые флажки, чтобы с этим массивом можно было работать.

Но функция ВПР (для сверки данных) все равно не работает, в то время как в файле образец эта функция работает.

Вопрос: почему не работает ВПР (или как сделать чтобы она работала)?
Вложения
Тип файла: xlsx Образец.xlsx (14.3 Кб, 12 просмотров)
Тип файла: xlsx Рабочий файл.xlsx (44.7 Кб, 16 просмотров)
optimi вне форума Ответить с цитированием
Старый 02.08.2016, 07:29   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Потому что надо понимать что текст 9511727913 из А1 это не число 9511727913 из В1

Код:
=VLOOKUP(TRIM(B1);A:A;1;0)

=впр(сжечпробелы(а1);А:А;1;0
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.08.2016, 07:32   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Или выполнить:
Код:
Sub qq()
    With Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        .Value = .Value
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент WebBrowser - отображение лишних символов FILINSHEIN C# (си шарп) 6 08.01.2013 12:42
Удаление лишних символов из Memo NSV Общие вопросы Delphi 10 23.11.2012 08:38
удаление лишних символов Den1zzkkk0 SQL, базы данных 2 27.01.2012 13:27
удаление из строки лишних символов maxefficiently Общие вопросы Delphi 2 01.03.2011 08:53
Вывод без лишних символов Billy Spleen Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 26.01.2010 12:47