0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
||||||
1 | ||||||
Поиск дубликатов в двух массивах с последующим удалением их из виртуального массива19.10.2016, 11:56. Показов 4972. Ответов 21
Метки нет (Все метки)
На одном листе есть две таблицы разделенные несколькими строками - это и есть 2 массива. Нужно проверить дублирующиеся значения между ними, но есть сложность - иногда одно и тоже значение повторяется в одном массиве из-за чего иногда некорректно отображаются данные. Хотелось бы создать код, который может избежать этой ошибки. Как я представляю процесс: берется значение из массива №1 и сравнивается со значениями из массива №2; при нахождении повтора эти два значения исключаются из сравнения(если есть такое же значение в массиве №1, то при сравнении уже не будет в массиве №2 такого же);если дубликатов нет, то строка со значением переносится на отдельный лист.
При этом хотелось бы чтобы все эти вычисления были виртуальными, никак не изменяя реальный документ. Это вообще возможно? Пока создала только такой код
0
|
19.10.2016, 11:56 | |
Ответы с готовыми решениями:
21
Сортировка цифр в одной ячейки с последующим удалением дубликатов Вывод дубликатов с последующим удалением из загружаемой таблицы SQL запросом Поиск одинаковых строк в файле с удалением дубликатов Поиск слова в memo с последующим его удалением |
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,651
|
|
19.10.2016, 12:12 | 2 |
Как я понимаю задачу
вариант1 из одной объединенной таблицы убрать дубликаты оставив только строки с уникальными значениями вариант2 из таблицы 1 оставить только уникальные записи которые совпадают со значениями в таблице 2 вариант3 из таблицы1 оставить записи которые не совпадают со значениями таблицы 2 (нужное подчеркнуть)
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
19.10.2016, 12:38 [ТС] | 3 |
3 вариант...но при этом лист с которым работаем должен остаться без изменений
0
|
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,651
|
|
19.10.2016, 16:01 | 4 |
просмотрел таблицы
некоторые ячейки не заполнены из-за этого возникает неопределенность если судить по логике которую вы описали на новый лист необходимо перенести строки 3, 4, 5, 14 строки 3 нет во второй таблице строки 4, 5, 14 потому что во второй таблице Дата публикации ответа не заполнена соответственно однозначно сравнить записи не возможно а посему нужны дополнительные пояснения
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
19.10.2016, 16:57 [ТС] | 5 |
Столбиком сравнения является только "Номер заявки" и получается что на новый лист должны переноситься строки 3 и 4(или 5 - повтор строки 4).
0
|
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,651
|
|
20.10.2016, 10:31 | 6 |
Попробуйте
0
|
Hugo121
|
20.10.2016, 10:53
#7
|
Не по теме: Скачал последний файл (хотел глянуть код - действительно ли там что-то переносится, или как всегда :) ) - но вот казус: никакого кода нет. Или это мои админы проекты втихаря режут, или офис365 так воспринимает xls?
0
|
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,651
|
||||||
20.10.2016, 10:55 | 8 | |||||
о как
0
|
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
|
|
20.10.2016, 11:40 | 9 |
Спасибо.
Понятно, перенос как всегда спутан с копированием - "никак не изменяя реальный документ" перенести невозможно. Сохранил код в стандартном модуле - сохранился! Думаю стандартно на коллекции или словаре код был бы проще. Такой навороченный запрос я например вообще не воспринимаю А если делать на коллекции - то и на Маке сработает, а вот как там с "Provider=Microsoft.ACE.OLEDB.12.0;" я не в курсе, но сомневаюсь...
0
|
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,651
|
|
20.10.2016, 12:05 | 10 |
ну если просто то суть запроса сводится к тому чтобы
получить из 2 столбца сводную таблицу для этого берется столбец из первой таблицы группируется и считается количество одинаковых значений далее к этим двум столбцам добавляется столбец с количеством значений из второй таблицы вообщем получается что-то типа сводной таблицы ну а дальше просто дело техники на счет коллекции или словаря - я с ними мало работал (находятся в стадии изучения) так что по поводу "проще" ни чего сказать не могу - ясно одно цикл это долго
0
|
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
|
||||||
20.10.2016, 12:20 | 11 | |||||
С коллекцией просто.
Правда именно само копирование у меня в офисе365 почему-то подтормаживает, но тут за скоростью и не гнался. Делал только по столбцу номеров - поэтому скопировалась только шапка и одна строка.
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
20.10.2016, 14:54 [ТС] | 12 |
К сожалению выдает ошибку на строке
Код
rs.Open strSQL, objConnection, 3, 3.
0
|
4082 / 1462 / 401
Регистрация: 07.08.2013
Сообщений: 3,651
|
|
20.10.2016, 15:02 | 13 |
Видите ли
код который вам предоставлен имеет очень много условностей например Номер заявки должен располагаться именно во втором столбце сверху не должно быть пустых строк т.е. строка с названиями столбцов должна находиться в первой строке таблицы и там много еще чего тут надо разбираться в конкретном случае (я так думаю потому-что файл который я вам отправил - работает)
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
20.10.2016, 15:16 [ТС] | 14 |
Hugo121, да код работает НО выдает только одну строку, а по логике должно 2(3 и 4 строка)...это именно та проблема с которой я столкнулась при дубляже не только во второй таблице, но и в первой...если есть дубли по 1 таблице, то один из них переноситься на другой лист
Добавлено через 8 минут snipe, при ошибке возникает окно "Run-time error '-217217865(80040e37): Объект "Лист1$a2:f-1" не найден ядром СУБД Microsoft Access. Убедитесь, что объект существует, а его имя и путь к нему указаны правильно. Если объект "Лист1$a2:f-1" не является локальным, проверьте сетевое подключение или обратитесь к администратору сервера."
0
|
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
|
|
20.10.2016, 15:40 | 15 |
Ну тогда объясните подробно почему нужны две строки, раз без повторов только одна строка.
Подозреваю что тогда проще писать код используя словарь.
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
20.10.2016, 15:53 [ТС] | 16 |
Попробую объяснить на примере более подробно. У строки 3 нет дубляжа в таблице 2 поэтому данную строку переносим на другой лист. Строка 4 имеет дубль в таблице 1(это строка 5) и в таблице 2(это строка 25). Как я представляла действие кода(возможно допотопно): берется ячейка В4 и сравнивается со значениями в таблице 2, доходит до ячейки В25, значения равны и исключаюбтся их сравнения, соответственно берется следующая ячейка В5 и сравнивается со значениями в таблице 2, не находит равных(так как В25 исключена их дальнейшего сравнения), строка 5 переноситься на лист "Не дубликаты".
0
|
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
|
||||||
20.10.2016, 16:00 | 17 | |||||
Вот попробуйте, тоже на коллекции:
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
20.10.2016, 16:34 [ТС] | 18 |
Hugo121 спасибо, работает)))
Добавлено через 14 минут А можно поподробнее? Хотелось бы разобраться какая часть за что отвечает
0
|
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
|
||||||
20.10.2016, 20:41 | 19 | |||||
Скачал дома файл из №6 - код есть, всё работает, и мой код тоже шустро отрабатывает, но у меня дома Excel2010.
0
|
0 / 0 / 0
Регистрация: 26.09.2016
Сообщений: 163
|
|
21.10.2016, 09:54 [ТС] | 20 |
Спасибо за пояснения. Хотелось бы уточнить - если в таблице 2 будет строка без дубля в таблице 1 код будет работать корректно? и как можно это значение перенести на отдельный лист?
Код из №6 у меня не пошел - при запуске макроса Excel закрывался(работаю в 2013 офисе)
0
|
21.10.2016, 09:54 | |
21.10.2016, 09:54 | |
Помогаю со студенческими работами здесь
20
Поиск и выделение лишних пробелов с их последующим удалением Поиск строки в файле bat с последующим удалением Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
|
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
|
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
|
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
|
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать.
/ / . . .
|
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
|
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
|
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
|
Как записать только часть изменений файла в Git
bytestream 28.01.2025
В процессе разработки программного обеспечения часто возникает необходимость сохранить только определенные изменения из множества внесенных правок в файлах. Система контроля версий Git предоставляет. . .
|
[golang] 80. Remove Duplicates from Sorted Array II
alhaos 28.01.2025
В предоставленном упорядоченном по возрастанию целочисленном слайсе, оставить уникальные элементы полюс один возможный дубликат. Вернуть количество таких элементов.
/ / . . .
|
Что такое внедрение зависимостей и для чего оно применяется
bytestream 27.01.2025
В современной разработке программного обеспечения одной из ключевых проблем является управление зависимостями между различными компонентами системы. Внедрение зависимостей (Dependency Injection, DI). . .
|
Как установить cellpadding и cellspacing в CSS
bytestream 27.01.2025
При создании веб-страниц с табличными данными разработчики часто сталкиваются с необходимостью правильного оформления внутренних и внешних отступов в таблицах. В традиционной разметке HTML для этих. . .
|