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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2015, 08:19   #1
YustasRighno
 
Регистрация: 09.12.2015
Сообщений: 9
По умолчанию Выделение повторяющихся значений в разных столбцах более чем двух книг

Уважаемые программисты, очень прошу помощи.
Имеется порядка 58 файлов excel с инвентарными номерами (ячейки разного типа: числовые, текстовые...) техники в разных подразделениях.
Данные находятся в разных столбцах на листе 1 каждого из файлов.
Файлы имеют имена типа 1.xls, 2.xls и т.д.
Необходимо выявить повторяющиеся номера: выделить любым цветом, либо вынести в отдельную таблицу. Главное, знать какие дублируются в различных файлах.
Задачу усложняет тот факт, что в инвентарных номерах у кого-то присутствует первый "0", у кого-то нет, либо вместо цифры "0" поставили букву "О" в начале, либо пере "0" поставили "№", либо после инв.номера поставили "."
Номера в себе содержат "4143020".

Как вариант решения:
вынести все номера на один отдельный лист, а дальше я бы разобрался сортировкой, выделением и условным форматированием.
Вложения
Тип файла: xls 1.xls (51.0 Кб, 20 просмотров)
Тип файла: xls 2.xls (52.0 Кб, 15 просмотров)
Тип файла: xls 3.xls (48.5 Кб, 17 просмотров)
YustasRighno вне форума Ответить с цитированием
Старый 09.12.2015, 09:56   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как вариант -
поиском по листу определить столбцы (ну или брать по одному, пока не закончатся)
взять данные в массив
циклом по массиву в каждом значении заменить о,О,o,O на 0
убить №, точки,скобки, может ещё что...
TRIM()ом убить лишние пробелы
split() в массив
"числа" преобразовать в числа
всё это дело собирать в словарь, в item каждому можно класть что угодно - имя файла, или данные по конкретному номеру, и всё это в коллекцию
В финише всех из словаря, у кого коллекция более двух элементов - вывести в итоговый документ. Ну или перебрать опять всё заново и "выделить любым цветом".
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.12.2015, 11:16   #3
YustasRighno
 
Регистрация: 09.12.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Как вариант -
поиском по листу определить столбцы (ну или брать по одному, пока не закончатся)
взять данные в массив
циклом по массиву в каждом значении заменить о,О,o,O на 0
убить №, точки,скобки, может ещё что...
TRIM()ом убить лишние пробелы
split() в массив
"числа" преобразовать в числа
всё это дело собирать в словарь, в item каждому можно класть что угодно - имя файла, или данные по конкретному номеру, и всё это в коллекцию
В финише всех из словаря, у кого коллекция более двух элементов - вывести в итоговый документ. Ну или перебрать опять всё заново и "выделить любым цветом".
большое спасибо за ответ, но я не умею писать программный код
подскажите, пожалуйста, как это сделать, или какие вещи изучить?
YustasRighno вне форума Ответить с цитированием
Старый 09.12.2015, 11:28   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Изучать нужно открытие файлов, поиск по диапазону, массивы, замены, trim(), split(), преобразование типов, словари, коллекции...
Вообще тут писать кода нужно довольно много, и хоть ничего особо сложного нет, но гемора хватает. Лично я писать не возьмусь - нет ни времени, ни желания. Да и детали многие неясны...
Но думаю на фрилансе кто-нибудь возмётся. А может и тут забесплатно...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.12.2015, 11:58   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Просматривать один какой-то столбец или весь лист?
Только по всему листе искать совпадения или даже совпадения номер в файле 1 с номерами в файлах 2..58?

Цитата:
убить №, точки,скобки, может ещё что...
TRIM()ом убить лишние пробелы
А если в этом варианте в переменную добавлять только символы "0".."9" из записи номера
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 09.12.2015, 12:32   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
А если в этом варианте в переменную добавлять только символы "0".."9" из записи номера
Если в номерах всегда только цифры - то можно и так. Можно regexp привлечь. Но заменять все варианты "о" на 0 всёж думаю нужно. И тогда уж и "i" на единицы
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 09.12.2015, 14:31   #7
YustasRighno
 
Регистрация: 09.12.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Просматривать один какой-то столбец или весь лист?
Только по всему листе искать совпадения или даже совпадения номер в файле 1 с номерами в файлах 2..58?

А если в этом варианте в переменную добавлять только символы "0".."9" из записи номера
в инв.номере могут еще встречаться русские/латинские буквы (от А до М)

Просматривать можно только столбцы С, E, G, I, K, совпадение инв.номеров по всем 58 файлам в этих столбцах первых листов.
YustasRighno вне форума Ответить с цитированием
Старый 09.12.2015, 16:11   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

все файлы складываете в одну папку, в ту же папку положите файл InvNum, любым способом выполните процедуру Start
Вложения
Тип файла: rar InvNum.rar (25.5 Кб, 19 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.12.2015, 06:26   #9
YustasRighno
 
Регистрация: 09.12.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
все файлы складываете в одну папку, в ту же папку положите файл InvNum, любым способом выполните процедуру Start
Огромное спасибо! Проверил дома на 3-х файлах - всё идеально!
На работе сегодня запустил со всеми 44-мя (почистил не нужные файлы...) - вышла ошибка при открытии примерно 30го файла (скрин во вложении)
Скрин дебаггера прилагаю.
Изображения
Тип файла: jpg ошибка макроса.jpg (18.9 Кб, 65 просмотров)
Тип файла: jpg дебаг.jpg (121.7 Кб, 127 просмотров)

Последний раз редактировалось YustasRighno; 10.12.2015 в 07:40.
YustasRighno вне форума Ответить с цитированием
Старый 10.12.2015, 14:46   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

замените текст процедуры Sub AddIN2Diction
Код:
Sub AddIN2Diction()
  Dim wb As Workbook, r As Long, er As Long, rg As Range, adr As String, id As String
  For Each wb In Workbooks
    With wb.Worksheets(1)
      Set rg = .Cells(1)
      Set rg = .Cells.Find("Инвентарный номер", rg, xlValues, xlPart)
      If Not rg Is Nothing Then
        adr = rg.Address
        Do While True
          For r = rg.Row + 1 To .Cells(.Rows.Count, 1).End(xlUp).Offset(1, rg.Column - 1).End(xlUp).Row
            id = TrimId(CStr(.Cells(r, rg.Column)))
            If id <> "" Then
              If Not DIN.exists(id) Then
                DIN.Add id, "<<" & wb.Name & ">> " & Cells(r, rg.Column).Address(False, False)
              End If
            End If
          Next
          Set rg = .Cells.Find("Инвентарный номер", rg, xlValues, xlPart)
          If rg Is Nothing Then Exit Do
          If rg.Address = adr Then Exit Do
        Loop
      End If
    End With
  Next
End Sub
и присмотритесь к подписи...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение одинаковых значений в 2 столбцах jaguardark Microsoft Office Excel 22 06.09.2017 14:37
Нужна помощь в поиске повторяющихся значений в Excel путем сравнения данных в двух столбцах andreton Microsoft Office Excel 7 30.11.2015 17:54
Выделение цветом не совпадающих цифр из разных книг Ppaa Microsoft Office Excel 10 25.04.2012 20:51
макрос для сверки значений в двух столбцах Olya1985 Microsoft Office Excel 8 29.01.2011 17:49
Сравнение данных из двух и более книг Excel 2003 Елена20.12.1987 Microsoft Office Excel 0 20.04.2010 18:56