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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление лишних знаков в ячейке после сокращений - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Удаление лишних знаков в ячейке после сокращений (Формулы/Formulas)
Удаление лишних знаков в ячейке после сокращений
benza89 Дата: Вторник, 17.01.2017, 04:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Здравствуйте, уважаемые форумчане, просьба помочь с такой проблемой. В столбце K пишутся сокращения улиц, переулков и т.д., формат всегда "сокращение-точка-пробел", то есть "ул. ", "пер. ", "мкр. ", но есть исключения, как например "снт ", здесь просто пробел. Проблема в том, что операторы ставятся различные знаки, цифры, лишние пробелы, либо пробелы вообще отсутствуют после сокращений. А нужно всё подогнать под правильный формат.
Интересует макрос, который можно связать с кнопкой, чтобы после их работы всё исправить, а не мешать автоматическими исправлениями во время набора данных работником.
К сообщению приложен файл: 4205228.xls (27.5 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане, просьба помочь с такой проблемой. В столбце K пишутся сокращения улиц, переулков и т.д., формат всегда "сокращение-точка-пробел", то есть "ул. ", "пер. ", "мкр. ", но есть исключения, как например "снт ", здесь просто пробел. Проблема в том, что операторы ставятся различные знаки, цифры, лишние пробелы, либо пробелы вообще отсутствуют после сокращений. А нужно всё подогнать под правильный формат.
Интересует макрос, который можно связать с кнопкой, чтобы после их работы всё исправить, а не мешать автоматическими исправлениями во время набора данных работником.

Автор - benza89
Дата добавления - 17.01.2017 в 04:09
akademik90 Дата: Вторник, 17.01.2017, 08:38 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник
Сообщений: 99
Репутация: 3 ±
Замечаний: 100% ±

Excel 2013 -2016
benza89, Добрый день ! Вот Вам формулой ! Макросом не могу писать!
К сообщению приложен файл: 5410508.xls (29.0 Kb)


HOC EST VIVERE BIS, VITA POSSE PRIORE FRUI

Сообщение отредактировал akademik90 - Вторник, 17.01.2017, 08:46
 
Ответить
Сообщение benza89, Добрый день ! Вот Вам формулой ! Макросом не могу писать!

Автор - akademik90
Дата добавления - 17.01.2017 в 08:38
akademik90 Дата: Вторник, 17.01.2017, 09:38 | Сообщение № 3
Группа: Заблокированные
Ранг: Участник
Сообщений: 99
Репутация: 3 ±
Замечаний: 100% ±

Excel 2013 -2016
akademik90, Макрос
[vba]
Код
Public Function Печатн(str1 As String)
Dim str, s, s1, s2 As String
Dim i, j, k, n As Long
For i = 1 To Len(str1)
s = Mid(str1, i, 1)
If LCase(s) Like "[a-zа-я0-9,.!?/\|*'# )(+-_&%;:^$]" Or LCase(s) Like Chr(34) Then
str = str & s
End If
Next i
Печатн = str

End Function
[/vba]


HOC EST VIVERE BIS, VITA POSSE PRIORE FRUI

Сообщение отредактировал akademik90 - Вторник, 17.01.2017, 09:41
 
Ответить
Сообщениеakademik90, Макрос
[vba]
Код
Public Function Печатн(str1 As String)
Dim str, s, s1, s2 As String
Dim i, j, k, n As Long
For i = 1 To Len(str1)
s = Mid(str1, i, 1)
If LCase(s) Like "[a-zа-я0-9,.!?/\|*'# )(+-_&%;:^$]" Or LCase(s) Like Chr(34) Then
str = str & s
End If
Next i
Печатн = str

End Function
[/vba]

Автор - akademik90
Дата добавления - 17.01.2017 в 09:38
_Boroda_ Дата: Вторник, 17.01.2017, 09:45 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
akademik90,
По поводу пользования тегами - вставили код, выделили его, нажали на кнопку #, а не так, как Вы - нажали #, вставили код, нажали #
Или еще можно нажать #, встать курсором посередине [...][...]вот сюда[/...][/...] и вставить код. В Правилах есть ссылка на описание методов использования
Поправил в Вашем посте.

По поводу макроса
как Вы думаете, какой тип у переменных str, s, s1 и i, j, k? Подсказка - у всех шести переменных тип одинаковый. Почитайте про объявление переменных в VBA


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщениеakademik90,
По поводу пользования тегами - вставили код, выделили его, нажали на кнопку #, а не так, как Вы - нажали #, вставили код, нажали #
Или еще можно нажать #, встать курсором посередине [...][...]вот сюда[/...][/...] и вставить код. В Правилах есть ссылка на описание методов использования
Поправил в Вашем посте.

По поводу макроса
как Вы думаете, какой тип у переменных str, s, s1 и i, j, k? Подсказка - у всех шести переменных тип одинаковый. Почитайте про объявление переменных в VBA

Автор - _Boroda_
Дата добавления - 17.01.2017 в 09:45
akademik90 Дата: Вторник, 17.01.2017, 09:56 | Сообщение № 5
Группа: Заблокированные
Ранг: Участник
Сообщений: 99
Репутация: 3 ±
Замечаний: 100% ±

Excel 2013 -2016
_Boroda_, Ок Понял Вас. Вроде исправил и научился как вставлять код VBA


HOC EST VIVERE BIS, VITA POSSE PRIORE FRUI
 
Ответить
Сообщение_Boroda_, Ок Понял Вас. Вроде исправил и научился как вставлять код VBA

Автор - akademik90
Дата добавления - 17.01.2017 в 09:56
bmv98rus Дата: Вторник, 17.01.2017, 10:01 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
akademik90,
В данном случае разбор лексограммы более сложен. Нужно учитывать не только убрать лишнее , но и вставить недостающее, например элементарная ошибка снтГвоздь оператора нужно преобразовать по алгоритму, между снт и заглавной буквой Г должен встать пробел.
benza89,
Кнопку "все сделать хорошо" можно, но требуется продуманный алгоритм и тест кейсы для его проверки. Скорее всего такие алгоритмы есть готовые. Я не знаю что у вас там за ситема, но справочники и предлагаемый вариант при вводе для того и придуманы, чтоб потом не исправлять.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 17.01.2017, 10:02
 
Ответить
Сообщениеakademik90,
В данном случае разбор лексограммы более сложен. Нужно учитывать не только убрать лишнее , но и вставить недостающее, например элементарная ошибка снтГвоздь оператора нужно преобразовать по алгоритму, между снт и заглавной буквой Г должен встать пробел.
benza89,
Кнопку "все сделать хорошо" можно, но требуется продуманный алгоритм и тест кейсы для его проверки. Скорее всего такие алгоритмы есть готовые. Я не знаю что у вас там за ситема, но справочники и предлагаемый вариант при вводе для того и придуманы, чтоб потом не исправлять.

Автор - bmv98rus
Дата добавления - 17.01.2017 в 10:01
Alex_ST Дата: Вторник, 17.01.2017, 12:23 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Исправление ошибок ручного ввода текста вообще задача очень не простая и полностью так толком и не решённая.
Иначе не было бы столько ошибок в результатах распознавания отсканированных текстов, да и Ворд сам бы не только подчёркивал, но и исправлял ВСЕ опечатки, а не только те, которые ему даны в списках Автозамены.
А умные приложения ведь умеют частичный лексический анализ производить...
Решение же на VBA обязательно будет убогим и исправляющим далеко не всё, а лишь малую часть.
А если ещё учесть и распространённую лень операторов, часто не переключающих РУС-ЛАТ при вводе одинаковых ПО НАПИСАНИЮ букв...
(сам таким иногда грешу, когда в постах пишу простые формулы, то адреса ячеек бывает тоже русскими ввожу…)
Даже несколько макросов писал для замены или выделения цветом РУС-ЛАТ.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 17.01.2017, 22:39
 
Ответить
СообщениеИсправление ошибок ручного ввода текста вообще задача очень не простая и полностью так толком и не решённая.
Иначе не было бы столько ошибок в результатах распознавания отсканированных текстов, да и Ворд сам бы не только подчёркивал, но и исправлял ВСЕ опечатки, а не только те, которые ему даны в списках Автозамены.
А умные приложения ведь умеют частичный лексический анализ производить...
Решение же на VBA обязательно будет убогим и исправляющим далеко не всё, а лишь малую часть.
А если ещё учесть и распространённую лень операторов, часто не переключающих РУС-ЛАТ при вводе одинаковых ПО НАПИСАНИЮ букв...
(сам таким иногда грешу, когда в постах пишу простые формулы, то адреса ячеек бывает тоже русскими ввожу…)
Даже несколько макросов писал для замены или выделения цветом РУС-ЛАТ.

Автор - Alex_ST
Дата добавления - 17.01.2017 в 12:23
benza89 Дата: Вторник, 17.01.2017, 18:04 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Спасибо за ответы, но не совсем то, что нужно, формула не подойдет, как и такой макрос, потому что для них нужен отдельный столбец.
Можно тогда сделать проще, чтобы после точки ставил пробел, например, написано "ул.Зеленая", а он исправляет на "ул. Зеленая", то есть ставит пробел, после сокращение-точка.
 
Ответить
СообщениеСпасибо за ответы, но не совсем то, что нужно, формула не подойдет, как и такой макрос, потому что для них нужен отдельный столбец.
Можно тогда сделать проще, чтобы после точки ставил пробел, например, написано "ул.Зеленая", а он исправляет на "ул. Зеленая", то есть ставит пробел, после сокращение-точка.

Автор - benza89
Дата добавления - 17.01.2017 в 18:04
bmv98rus Дата: Вторник, 17.01.2017, 18:18 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
benza89,

Вам не проще тогда CTRL+h заменить "ул." на "ул. " , а после еще раз два пробела " " на один " " . Формула то сделает в другом столбце, а макрос может и в том же, но вот результат работы последнего непредсказуем. Alex_ST, и я это пытались пояснить.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеbenza89,

Вам не проще тогда CTRL+h заменить "ул." на "ул. " , а после еще раз два пробела " " на один " " . Формула то сделает в другом столбце, а макрос может и в том же, но вот результат работы последнего непредсказуем. Alex_ST, и я это пытались пояснить.

Автор - bmv98rus
Дата добавления - 17.01.2017 в 18:18
Wasilich Дата: Среда, 18.01.2017, 05:12 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
А вдруг так подойдет. Правда, сколько времени будет обрабатываться большой массив, не знаю. Но все же, не вручную.
[vba]
Код
Sub www()
  Dim t&, x$, s$, i&, j&
  For t = 2 To Range("N" & Rows.Count).End(xlUp).Row
    x = Cells(t, "N")
    For i = 1 To 10
      If Mid(x, i, 1) Like "*[а-я]*" Then Else Exit For
    Next
    s = Mid(x, 1, i - 1)
    For j = 1 To 10
      If Mid(x, j, 1) Like "*[А-Я]*" Then Exit For
    Next
    Cells(t, "N") = s & ". " & Mid(x, j, 99)
  Next
End Sub
[/vba]
К сообщению приложен файл: benza892.xls (37.0 Kb)
 
Ответить
СообщениеА вдруг так подойдет. Правда, сколько времени будет обрабатываться большой массив, не знаю. Но все же, не вручную.
[vba]
Код
Sub www()
  Dim t&, x$, s$, i&, j&
  For t = 2 To Range("N" & Rows.Count).End(xlUp).Row
    x = Cells(t, "N")
    For i = 1 To 10
      If Mid(x, i, 1) Like "*[а-я]*" Then Else Exit For
    Next
    s = Mid(x, 1, i - 1)
    For j = 1 To 10
      If Mid(x, j, 1) Like "*[А-Я]*" Then Exit For
    Next
    Cells(t, "N") = s & ". " & Mid(x, j, 99)
  Next
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 18.01.2017 в 05:12
Alex_ST Дата: Среда, 18.01.2017, 09:20 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Ребята, ну не надо код привязывать к конкретным книгам, листам, диапазонам и заменяемым значениям! Завтра столбец изменится или новое правило замены появится... Опять всё переделывать что ли?
Не знаю, будет ли у меня свободное время, но нужно, имхо, В ОТДЕЛЬНОЙ КНИГЕ написать процедуру, которая в ВЫДЕЛЕННОМ пользователем диапазоне АКТИВНОЙ КНИГИ (а для предотвращения не верной коррекции лучше в ячейках соседнего свободного столбца) проведёт циклом замену субстрингов, ЗАДАННЫХ ПОЛЬЗОВАТЕЛЕМ, на специальном листе шаблонов (паттернов) замены в этой отдельной книге.
При этом замену лучше проводить не по каждой ячейке, а сразу по всему диапазону, применяя к нему целиком метод Replace для каждого из заданных шаблонов (паттернов) замены. Ещё лучше, конечно, регулярными выражениями - RegExp'ами, но я их не знаю, к сожалению... :(
Попробую сейчас выкроить время и набросать... Правда, к сожалению, с работы выложить файл с макросами не смогу (собаки-сисадмины!), поэтому если сделаю, то отдельно файл без процедур и текст модуля.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеРебята, ну не надо код привязывать к конкретным книгам, листам, диапазонам и заменяемым значениям! Завтра столбец изменится или новое правило замены появится... Опять всё переделывать что ли?
Не знаю, будет ли у меня свободное время, но нужно, имхо, В ОТДЕЛЬНОЙ КНИГЕ написать процедуру, которая в ВЫДЕЛЕННОМ пользователем диапазоне АКТИВНОЙ КНИГИ (а для предотвращения не верной коррекции лучше в ячейках соседнего свободного столбца) проведёт циклом замену субстрингов, ЗАДАННЫХ ПОЛЬЗОВАТЕЛЕМ, на специальном листе шаблонов (паттернов) замены в этой отдельной книге.
При этом замену лучше проводить не по каждой ячейке, а сразу по всему диапазону, применяя к нему целиком метод Replace для каждого из заданных шаблонов (паттернов) замены. Ещё лучше, конечно, регулярными выражениями - RegExp'ами, но я их не знаю, к сожалению... :(
Попробую сейчас выкроить время и набросать... Правда, к сожалению, с работы выложить файл с макросами не смогу (собаки-сисадмины!), поэтому если сделаю, то отдельно файл без процедур и текст модуля.

Автор - Alex_ST
Дата добавления - 18.01.2017 в 09:20
bmv98rus Дата: Среда, 18.01.2017, 14:06 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Alex_ST, [offtop]
Правда, к сожалению, с работы выложить файл с макросами не смогу (собаки-сисадмины!)

Птичку нашу, попрошу не обижать :-) . архив+ пароль, не проходит? [/offtop]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеAlex_ST, [offtop]
Правда, к сожалению, с работы выложить файл с макросами не смогу (собаки-сисадмины!)

Птичку нашу, попрошу не обижать :-) . архив+ пароль, не проходит? [/offtop]

Автор - bmv98rus
Дата добавления - 18.01.2017 в 14:06
Alex_ST Дата: Среда, 18.01.2017, 14:23 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
[offtop]Если бы всё было так просто... Trend Micro Internet Sequrity Scan, собака, скачивать архивы даёт, но умудряется при этом выдирать из них модули VBA, после чего они, естественно, перестают открываться вообще.
В xls-файлах просто оказываются пустыми модули, а xlsm просто не открываются...
Хотя... На счёт пароля может быть имеет смысл попробовать... Но что-то я сомневаюсь :([/offtop]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение[offtop]Если бы всё было так просто... Trend Micro Internet Sequrity Scan, собака, скачивать архивы даёт, но умудряется при этом выдирать из них модули VBA, после чего они, естественно, перестают открываться вообще.
В xls-файлах просто оказываются пустыми модули, а xlsm просто не открываются...
Хотя... На счёт пароля может быть имеет смысл попробовать... Но что-то я сомневаюсь :([/offtop]

Автор - Alex_ST
Дата добавления - 18.01.2017 в 14:23
bmv98rus Дата: Среда, 18.01.2017, 15:11 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Alex_ST, [offtop]
Но что-то я сомневаюсь :(
А Вы проверьте, это я как та собака со стажем говорю. Если просто не срубит целиком, так как не смог распознать содержание, то пройдет. В свое время можно было архив в архив запихнуть, но сейчас это не помеха.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеAlex_ST, [offtop]
Но что-то я сомневаюсь :(
А Вы проверьте, это я как та собака со стажем говорю. Если просто не срубит целиком, так как не смог распознать содержание, то пройдет. В свое время можно было архив в архив запихнуть, но сейчас это не помеха.

Автор - bmv98rus
Дата добавления - 18.01.2017 в 15:11
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Удаление лишних знаков в ячейке после сокращений (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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