0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
|
1 | |
Сопоставление значений из 2 разных .xls файлов29.10.2013, 12:51. Показов 1808. Ответов 15
Метки нет (Все метки)
Здравствуйте.
Есть задача: есть 2 екселевских файла, файл "А" и файл "Б", в файле "а" есть столбец значений 10 строчек, в файле "Б" тоже есть стобец значений но уже на 70 строчек, задача вот в чём, нужна программа, которая сначала будет запоминать значения из столбца файла "а", а потом в столбце файла "Б" будет искать значения которые совпадают со значениями из файла "а" и те строки в которых соответствия будут найдены, красить в какой нибудь цвет (любой красный зелёный неважно).
0
|
29.10.2013, 12:51 | |
Ответы с готовыми решениями:
15
Сопоставление двух таблиц из разных файлов excel Первые листы всех XLS файлов в папке перенести в один XLS файл Вывод значений из двух разных файлов в ОДНОМ цикле Сопоставление дат из разных строк и столбцов |
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
29.10.2013, 13:07 | 2 |
Быстрее будет ВПР() или СЧЁТЕСЛИ() в УФ вставить, чем программу ждать. На 70 строк вполне.
0
|
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
||||||
29.10.2013, 13:40 [ТС] | 3 | |||||
Я полнейший дуб в вопросах программирования, объединил всё в один файл, теперь в стобце C висят значения которые надо запоминать, а в столбце A которые надо сверять и перекрашивать, используя остатки мозга и информацию я по быстрому родил вот что:
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
29.10.2013, 14:17 | 4 |
Да уж... Выглядит конечно красиво, но столько ошибок!
Можно как пример приводить Даже не знаю что править... Может всёж файл с данными покажете - вот на нём кто-нибудь рабочий код и покажет?
1
|
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
|
29.10.2013, 14:23 [ТС] | 5 |
а ы...да конечно)) сейчас вот он родимый. Ошибки неизбежны, это то, чему я научился с нуля за полтора часа)) так что любой помощи и замечаниям буду рад))
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
29.10.2013, 14:23 | 6 | |||||
Ну например так исправил, основываясь на Вашем коде. Найдите 10 отличий
0
|
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
|
29.10.2013, 14:25 [ТС] | 7 |
спасибо большое)) конечно понятно что начинать надо с азов, и курить книги для начала)
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
29.10.2013, 14:59 | 8 |
Посмотрел пример - нет там ни одного совпадения, можете не волноваться
Вообще думаю в азы нужно занести - работа напрямую с ячейками в десятки раз медленнее, чем работа с данными этих ячеек в памяти (в массиве). Как-то замерял - получилось 43 раза. Но в данном примере конечно сильно ощутимой разницы нет, т.к. строк всего 150, но цикл в цикле по 150 ячейкам всёж уже немного заметен. Вот если взять данные сперва в массив, затем перебирать цикл в цикле их, и идти на лист только чтоб покрасить - будет глазу незаметно. Ещё быстрее - взять в массив (или два), занести один список в словарь (один цикл по массиву), затем при втором цикле по массиву проверить по словарю наличие данных. Т.е. всего 2 прохода по данным и поиск в словаре. В результате получаем номер строки, в которой нужно закрасить ячейку. Можно красить сразу, можно собрать эти диапазоны в union и закрасить сразу всё. Или поставить на лист метки (используя массив), отсортировать по ним лист, закрасить сразу весь блок строк. Хотя возможно для задачи "определить что повторяется" достаточно просто поставить метки. Или получить отдельно список этих повторяющихся номеров. Или удалить эти номера из исходного массива. Или... Я бы в любом случае делал на массивах и словаре (или коллекции, в зависимости от задачи - всёж коллекция побыстрее словаря).
0
|
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,086
|
||||||
29.10.2013, 22:16 | 9 | |||||
Вот по рекомендации Hugo121 можно сделать все в один цикл:
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
29.10.2013, 23:18 | 10 |
To stosstruppen. Здравствуйте. А вот можна узнать? Эти раскраски листа - они Вам что-то дают? Или Вы потом ориентируетесь кодом по цвету? Если данных много - я просто не пойму, зачем тогда все эти "пятна". Но, в принципе, я и в graffiti полный профан (отстал, наверно, от жизни )
0
|
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
|
30.10.2013, 04:43 [ТС] | 11 |
они мне дают да)) в целом господа чертовски вам спасибо за отзывчивость однако ж не работает програмулина пока, не красит искомые ячейки вот файл с совпадениями, схема работы с одним циклом мне новичку пока не совсем понятно, просто логику не могу понять, а вот с двумя хоть и громоздко но зато понятно, программа красит только пустые ячейки, но оно и понятно в них значения конечно равны) но надо не пустые ячейки сравнивать а заполненные) если я вас ещё не окончательно зае....всмысле надоел)) то вот файл в столбцах которого есть совпадения, попытался исправить диапазон диапазон ячеек, задал границами точно те ячейки где есть значения, программа просто перестала делать что либо ошибок не выдаёт, но и ничего не делает))
0
|
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
||||||
30.10.2013, 06:41 | 12 | |||||
Держи.
В коде макроса указать нужные диапазоны (столбец ключей и целевой столбец). Поиск ведет по полному соответствию содержимого ячеек. Собственно ключи добавляются в коллекцию, при поиске определяется есть ли такой ключ или нет. Заметил, что в ячейках есть лишние пробелы, они убираются функцией Trim. Можно еще приводить все к нижнему регистру функцией LCase. Чтобы записать значения из диапазона на листе в массив используется следующий код
1
|
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
|
30.10.2013, 11:20 [ТС] | 13 |
тысяча благодарностей)) работает))
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||||||||||||||||||||||
30.10.2013, 13:06 | 14 | |||||||||||||||||||||||||
Афигеть... Это я заглянул в файл
Серьёзно выглядит... Куда там нам со словарями в 3 строки... Кстати, у меня не фурычит - 2003 тут у меня Добавлено через 8 минут Вот мои 3 строки
Про 3 не шутил, можно впихнуть:
Хотя конечно (Not .Exists(a(i, 2))) + 3 тонкое ущербное место... Добавлено через 2 минуты Лучше эту часть так написать:
Ну и тогда уже 2 строки:
1
|
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 7
|
||||||
01.11.2013, 10:42 [ТС] | 15 | |||||
господа, кому интересно) проблема окончательно решилась), в одной из колонок с данными (а копировались они всегда из одной присылаемой мне таблицы) оказались не просто пробелы,а некий хитрые символы, под названием символ 160, в итоге, при помощи моего старшего коллеги был таки создан работающий макрос который прост как жизнь папуаса, это чертовски разгрузило мне жизнь) спасибо всем отозвавшимся огромное, вот то что у меня получилось))
блин опять неправильно теги расставил
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
||||||
01.11.2013, 11:58 | 16 | |||||
Сравните (обновление специально не отключал):
Там 3 кода! Не пропустите последний!
0
|
01.11.2013, 11:58 | |
01.11.2013, 11:58 | |
Помогаю со студенческими работами здесь
16
Сопоставление значений в БД Сопоставление значений сопоставление файлов Поиск и сопоставление файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |