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

Вход

Регистрация

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

 

= Мир MS Excel/Выделение группы значений с повторяющимися знаками - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделение группы значений с повторяющимися знаками (Макросы/Sub)
Выделение группы значений с повторяющимися знаками
maxx801 Дата: Четверг, 15.01.2015, 10:35 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем хорошего дня. Нужна Ваша помощь в следующем:
Есть столбец с буквено-численными значениями по типу: MRKU06928955 и МSCU4789555
Нужен макрос, который сможет найти значения, у которых совпадают 4 числовых значения подряд, как в примере MRKU06928955 и МSCU4789555
Именно числовые, не буквенные. Для таких значений, в столбце правее нужно добавить порядковый номер.
Т.е. для первой группы ячеек с 4мя повторяющимися цифрами - 1. Для следующей группы - 2 и т.д.
Если есть совпадения через группы, то в ячейке правее должен быть порядковый номер 1,2 или 2,3 соответственно.
Выделение цветом не подходит, т.к. на печати этого не будет видно.
Спасибо заранее!!!
 
Ответить
СообщениеВсем хорошего дня. Нужна Ваша помощь в следующем:
Есть столбец с буквено-численными значениями по типу: MRKU06928955 и МSCU4789555
Нужен макрос, который сможет найти значения, у которых совпадают 4 числовых значения подряд, как в примере MRKU06928955 и МSCU4789555
Именно числовые, не буквенные. Для таких значений, в столбце правее нужно добавить порядковый номер.
Т.е. для первой группы ячеек с 4мя повторяющимися цифрами - 1. Для следующей группы - 2 и т.д.
Если есть совпадения через группы, то в ячейке правее должен быть порядковый номер 1,2 или 2,3 соответственно.
Выделение цветом не подходит, т.к. на печати этого не будет видно.
Спасибо заранее!!!

Автор - maxx801
Дата добавления - 15.01.2015 в 10:35
DJ_Marker_MC Дата: Четверг, 15.01.2015, 10:58 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
Добрый день.
Есть столбец

ГДЕ?
у которых совпадают 4 числовых значения подряд, как в примере

Не вижу примера.
Читаем правила, прилаживаем пример!
 
Ответить
СообщениеДобрый день.
Есть столбец

ГДЕ?
у которых совпадают 4 числовых значения подряд, как в примере

Не вижу примера.
Читаем правила, прилаживаем пример!

Автор - DJ_Marker_MC
Дата добавления - 15.01.2015 в 10:58
alex77755 Дата: Четверг, 15.01.2015, 12:02 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

А если есть совпадения 2 или более групп?
MRKU06928955, МSCU4789555
MRKU069278952
В третем совпадает одна группа из первого и одна из второго


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеА если есть совпадения 2 или более групп?
MRKU06928955, МSCU4789555
MRKU069278952
В третем совпадает одна группа из первого и одна из второго

Автор - alex77755
Дата добавления - 15.01.2015 в 12:02
Gustav Дата: Четверг, 15.01.2015, 12:59 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Пока ТС еще только уточняет задачу, мы уже почти готовы к ее решению :) Набросал запрос SQL, выделяющий по 4 цифры из каждого кода (несколько раз, "внахлест черепицей") и сортирующий затем получившийся список по полю с этими 4 цифрами, так что одинаковые оказываются рядом и можно с ними в соседней колонке что-то поделать, когда будет окончательно понятно ЧТО именно. См. получившуюся картину в файле на Лист2.

[vba]
Код
Sub io()
     Dim rst
     Dim sql As String
      
     Set rst = CreateObject("ADODB.Recordset")
      
     sql = sql & "SELECT F1, F2 FROM ( "
     sql = sql & "SELECT F1, Trim(Mid(F1, 1,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 2,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 3,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 4,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 5,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 6,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 7,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 8,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 9,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1,10,4)) AS F2 FROM [Лист1$] "
     sql = sql & ") WHERE F2 Like '[0-9][0-9][0-9][0-9]' "
     sql = sql & "ORDER BY F2 "
      
     rst.Open sql, _
     "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
     & ThisWorkbook.FullName & _
     ";Extended Properties='Excel 12.0;HDR=No'"
      
     [Лист2!A1].CopyFromRecordset rst
End Sub
[/vba]
Внимание! Чтобы макрос работал, книгу надо сначала сохранить у себя на диске, иначе ThisWorkbook.FullName вернет непонятно что из интернета.
К сообщению приложен файл: 4digits.xlsm (17.0 Kb)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеПока ТС еще только уточняет задачу, мы уже почти готовы к ее решению :) Набросал запрос SQL, выделяющий по 4 цифры из каждого кода (несколько раз, "внахлест черепицей") и сортирующий затем получившийся список по полю с этими 4 цифрами, так что одинаковые оказываются рядом и можно с ними в соседней колонке что-то поделать, когда будет окончательно понятно ЧТО именно. См. получившуюся картину в файле на Лист2.

[vba]
Код
Sub io()
     Dim rst
     Dim sql As String
      
     Set rst = CreateObject("ADODB.Recordset")
      
     sql = sql & "SELECT F1, F2 FROM ( "
     sql = sql & "SELECT F1, Trim(Mid(F1, 1,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 2,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 3,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 4,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 5,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 6,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 7,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 8,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1, 9,4)) AS F2 FROM [Лист1$] UNION ALL "
     sql = sql & "SELECT F1, Trim(Mid(F1,10,4)) AS F2 FROM [Лист1$] "
     sql = sql & ") WHERE F2 Like '[0-9][0-9][0-9][0-9]' "
     sql = sql & "ORDER BY F2 "
      
     rst.Open sql, _
     "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
     & ThisWorkbook.FullName & _
     ";Extended Properties='Excel 12.0;HDR=No'"
      
     [Лист2!A1].CopyFromRecordset rst
End Sub
[/vba]
Внимание! Чтобы макрос работал, книгу надо сначала сохранить у себя на диске, иначе ThisWorkbook.FullName вернет непонятно что из интернета.

Автор - Gustav
Дата добавления - 15.01.2015 в 12:59
maxx801 Дата: Четверг, 15.01.2015, 14:31 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приложил пример с пояснениями
К сообщению приложен файл: example_mx801.xlsx (10.2 Kb)
 
Ответить
СообщениеПриложил пример с пояснениями

Автор - maxx801
Дата добавления - 15.01.2015 в 14:31
alex77755 Дата: Четверг, 15.01.2015, 14:48 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Но почему тогда в строке 8 1,3 а в строке 2 только 1?
Ведь проверять надо все элементы?!
Тогда и во второй строке должно быть что-то типа 3, 1


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеНо почему тогда в строке 8 1,3 а в строке 2 только 1?
Ведь проверять надо все элементы?!
Тогда и во второй строке должно быть что-то типа 3, 1

Автор - alex77755
Дата добавления - 15.01.2015 в 14:48
alex77755 Дата: Четверг, 15.01.2015, 15:05 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Да и плюс в 6 и 10 строках находится аж по 3 группы совпадающих "четвёрок"

5 9 0218 KKGU0218215 KKАU5021821
5 9 2182 KKGU0218215 KKАU5021821
5 9 1821 KKGU0218215 KKАU5021821


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеДа и плюс в 6 и 10 строках находится аж по 3 группы совпадающих "четвёрок"

5 9 0218 KKGU0218215 KKАU5021821
5 9 2182 KKGU0218215 KKАU5021821
5 9 1821 KKGU0218215 KKАU5021821

Автор - alex77755
Дата добавления - 15.01.2015 в 15:05
Gustav Дата: Четверг, 15.01.2015, 16:01 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Для решения задачки нужно составить справочник уникальных четверок, которые встречаются более одного раза на Лист2 в моём файле в сообщении 4. Затем эти четверки пронумеровать и прописать через запятую на Лист1, используя связи четверок и исходных кодов с Лист2. Нормально объяснил? :) Сейчас нет времени, чуть позже могу проделать, если до этого никто еще не сделает.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеДля решения задачки нужно составить справочник уникальных четверок, которые встречаются более одного раза на Лист2 в моём файле в сообщении 4. Затем эти четверки пронумеровать и прописать через запятую на Лист1, используя связи четверок и исходных кодов с Лист2. Нормально объяснил? :) Сейчас нет времени, чуть позже могу проделать, если до этого никто еще не сделает.

Автор - Gustav
Дата добавления - 15.01.2015 в 16:01
maxx801 Дата: Четверг, 15.01.2015, 16:23 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
То что групп может быть много - ок. Массив не очень большой 40 - 50 номеров. Да и на практике номера сильно отличаются друг от друга.
 
Ответить
СообщениеТо что групп может быть много - ок. Массив не очень большой 40 - 50 номеров. Да и на практике номера сильно отличаются друг от друга.

Автор - maxx801
Дата добавления - 15.01.2015 в 16:23
Gustav Дата: Четверг, 15.01.2015, 19:22 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Ну, как-то так. На листе 5 - те номера, кого коснулась процедура. На листе 3 - справочник "четверок" (повторен также вручную на листе 5 - для удобства проверки). На листах 1-5 последовательно представлены все этапы трансформации.

К сообщению приложен файл: 4digits1.xlsm (25.3 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Четверг, 15.01.2015, 19:26
 
Ответить
СообщениеНу, как-то так. На листе 5 - те номера, кого коснулась процедура. На листе 3 - справочник "четверок" (повторен также вручную на листе 5 - для удобства проверки). На листах 1-5 последовательно представлены все этапы трансформации.


Автор - Gustav
Дата добавления - 15.01.2015 в 19:22
alex77755 Дата: Четверг, 15.01.2015, 22:28 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Gustav, Теорию, вроде, описал правильно. Я такую же реализовывал.
Реализацию не проверял, но с результатами не согласен
Почему в последнем нет значений? Там же 3 четвёрки
Сорри запутался в листах. Для проверки вставлял данные в лист 5
В результатах не показывается строка где нет совпадений МSCU0789065
К сообщению приложен файл: 0515619.jpg (20.8 Kb)


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Четверг, 15.01.2015, 22:43
 
Ответить
СообщениеGustav, Теорию, вроде, описал правильно. Я такую же реализовывал.
Реализацию не проверял, но с результатами не согласен
Почему в последнем нет значений? Там же 3 четвёрки
Сорри запутался в листах. Для проверки вставлял данные в лист 5
В результатах не показывается строка где нет совпадений МSCU0789065

Автор - alex77755
Дата добавления - 15.01.2015 в 22:28
alex77755 Дата: Четверг, 15.01.2015, 22:30 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Мой вариант
К сообщению приложен файл: 9150367.rar (12.9 Kb)


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеМой вариант

Автор - alex77755
Дата добавления - 15.01.2015 в 22:30
Gustav Дата: Четверг, 15.01.2015, 22:50 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2757
Репутация: 1139 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
но с результатами не согласен
Почему в последнем нет значений? Там же 3 четвёрки

У меня колонка А отсортирована, поэтому то, что называется "последним" у меня в строке 6 и там действительно 3 четверки. Пустые, которых не коснулась процедура, как я уже сказал, не отображал. При желании можно подтянуть данные с Лист5 на Лист1 при помощи ВПР - художнику это уже было не интересно :D


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Четверг, 15.01.2015, 23:19
 
Ответить
Сообщение
но с результатами не согласен
Почему в последнем нет значений? Там же 3 четвёрки

У меня колонка А отсортирована, поэтому то, что называется "последним" у меня в строке 6 и там действительно 3 четверки. Пустые, которых не коснулась процедура, как я уже сказал, не отображал. При желании можно подтянуть данные с Лист5 на Лист1 при помощи ВПР - художнику это уже было не интересно :D

Автор - Gustav
Дата добавления - 15.01.2015 в 22:50
maxx801 Дата: Понедельник, 19.01.2015, 10:53 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Друзья, большое спасибо! Работает.
 
Ответить
СообщениеДрузья, большое спасибо! Работает.

Автор - maxx801
Дата добавления - 19.01.2015 в 10:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделение группы значений с повторяющимися знаками (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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