|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
||||||
Поиск дубликатов в двух массивах с последующим удалением их из виртуального массива19.10.2016, 11:56. Показов 5397. Ответов 21
Метки нет (Все метки)
На одном листе есть две таблицы разделенные несколькими строками - это и есть 2 массива. Нужно проверить дублирующиеся значения между ними, но есть сложность - иногда одно и тоже значение повторяется в одном массиве из-за чего иногда некорректно отображаются данные. Хотелось бы создать код, который может избежать этой ошибки. Как я представляю процесс: берется значение из массива №1 и сравнивается со значениями из массива №2; при нахождении повтора эти два значения исключаются из сравнения(если есть такое же значение в массиве №1, то при сравнении уже не будет в массиве №2 такого же);если дубликатов нет, то строка со значением переносится на отдельный лист.
При этом хотелось бы чтобы все эти вычисления были виртуальными, никак не изменяя реальный документ. Это вообще возможно? Пока создала только такой код
0
|
||||||
| 19.10.2016, 11:56 | |
|
Ответы с готовыми решениями:
21
Сортировка цифр в одной ячейки с последующим удалением дубликатов
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
|
|
| 19.10.2016, 12:12 | |
|
Как я понимаю задачу
вариант1 из одной объединенной таблицы убрать дубликаты оставив только строки с уникальными значениями вариант2 из таблицы 1 оставить только уникальные записи которые совпадают со значениями в таблице 2 вариант3 из таблицы1 оставить записи которые не совпадают со значениями таблицы 2 (нужное подчеркнуть)
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
|
| 19.10.2016, 12:38 [ТС] | |
|
3 вариант...но при этом лист с которым работаем должен остаться без изменений
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
|
|
| 19.10.2016, 16:01 | |
|
просмотрел таблицы
некоторые ячейки не заполнены из-за этого возникает неопределенность если судить по логике которую вы описали на новый лист необходимо перенести строки 3, 4, 5, 14 строки 3 нет во второй таблице строки 4, 5, 14 потому что во второй таблице Дата публикации ответа не заполнена соответственно однозначно сравнить записи не возможно а посему нужны дополнительные пояснения
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
|
| 19.10.2016, 16:57 [ТС] | |
|
Столбиком сравнения является только "Номер заявки" и получается что на новый лист должны переноситься строки 3 и 4(или 5 - повтор строки 4).
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
|
|
| 20.10.2016, 10:31 | |
|
Попробуйте
0
|
|
| 20.10.2016, 10:53 | |
|
Не по теме: Скачал последний файл (хотел глянуть код - действительно ли там что-то переносится, или как всегда :) ) - но вот казус: никакого кода нет. Или это мои админы проекты втихаря режут, или офис365 так воспринимает xls?
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
|
||||||
| 20.10.2016, 10:55 | ||||||
|
о как
0
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 20.10.2016, 11:40 | |
|
Спасибо.
Понятно, перенос как всегда спутан с копированием - "никак не изменяя реальный документ" перенести невозможно. Сохранил код в стандартном модуле - сохранился! Думаю стандартно на коллекции или словаре код был бы проще. Такой навороченный запрос я например вообще не воспринимаю ![]() А если делать на коллекции - то и на Маке сработает, а вот как там с "Provider=Microsoft.ACE.OLEDB.12.0;" я не в курсе, но сомневаюсь...
0
|
|
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
|
|
| 20.10.2016, 12:05 | |
|
ну если просто то суть запроса сводится к тому чтобы
получить из 2 столбца сводную таблицу для этого берется столбец из первой таблицы группируется и считается количество одинаковых значений далее к этим двум столбцам добавляется столбец с количеством значений из второй таблицы вообщем получается что-то типа сводной таблицы ну а дальше просто дело техники на счет коллекции или словаря - я с ними мало работал (находятся в стадии изучения) так что по поводу "проще" ни чего сказать не могу - ясно одно цикл это долго
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 20.10.2016, 12:20 | ||||||
|
С коллекцией просто.
Правда именно само копирование у меня в офисе365 почему-то подтормаживает, но тут за скоростью и не гнался. Делал только по столбцу номеров - поэтому скопировалась только шапка и одна строка.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
||||||
| 20.10.2016, 14:54 [ТС] | ||||||
|
К сожалению выдает ошибку на строке
0
|
||||||
|
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
|
|
| 20.10.2016, 15:02 | |
|
Видите ли
код который вам предоставлен имеет очень много условностей например Номер заявки должен располагаться именно во втором столбце сверху не должно быть пустых строк т.е. строка с названиями столбцов должна находиться в первой строке таблицы и там много еще чего тут надо разбираться в конкретном случае (я так думаю потому-что файл который я вам отправил - работает)
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
|
| 20.10.2016, 15:16 [ТС] | |
|
Hugo121, да код работает НО выдает только одну строку, а по логике должно 2(3 и 4 строка)...это именно та проблема с которой я столкнулась при дубляже не только во второй таблице, но и в первой...если есть дубли по 1 таблице, то один из них переноситься на другой лист
Добавлено через 8 минут snipe, при ошибке возникает окно "Run-time error '-217217865(80040e37): Объект "Лист1$a2:f-1" не найден ядром СУБД Microsoft Access. Убедитесь, что объект существует, а его имя и путь к нему указаны правильно. Если объект "Лист1$a2:f-1" не является локальным, проверьте сетевое подключение или обратитесь к администратору сервера."
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 20.10.2016, 15:40 | |
|
Ну тогда объясните подробно почему нужны две строки, раз без повторов только одна строка.
Подозреваю что тогда проще писать код используя словарь.
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
|
| 20.10.2016, 15:53 [ТС] | |
|
Попробую объяснить на примере более подробно. У строки 3 нет дубляжа в таблице 2 поэтому данную строку переносим на другой лист. Строка 4 имеет дубль в таблице 1(это строка 5) и в таблице 2(это строка 25). Как я представляла действие кода(возможно допотопно): берется ячейка В4 и сравнивается со значениями в таблице 2, доходит до ячейки В25, значения равны и исключаюбтся их сравнения, соответственно берется следующая ячейка В5 и сравнивается со значениями в таблице 2, не находит равных(так как В25 исключена их дальнейшего сравнения), строка 5 переноситься на лист "Не дубликаты".
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 20.10.2016, 16:00 | ||||||
|
Вот попробуйте, тоже на коллекции:
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
|
| 20.10.2016, 16:34 [ТС] | |
|
Hugo121 спасибо, работает)))
Добавлено через 14 минут А можно поподробнее? Хотелось бы разобраться какая часть за что отвечает
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 20.10.2016, 20:41 | ||||||
Скачал дома файл из №6 - код есть, всё работает, и мой код тоже шустро отрабатывает, но у меня дома Excel2010.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 164
|
|
| 21.10.2016, 09:54 [ТС] | |
|
Спасибо за пояснения. Хотелось бы уточнить - если в таблице 2 будет строка без дубля в таблице 1 код будет работать корректно? и как можно это значение перенести на отдельный лист?
Код из №6 у меня не пошел - при запуске макроса Excel закрывался(работаю в 2013 офисе)
0
|
|
| 21.10.2016, 09:54 | |
|
Помогаю со студенческими работами здесь
20
Поиск слова в memo с последующим его удалением Поиск и выделение лишних пробелов с их последующим удалением
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|