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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.05.2008, 07:24   #1
Neyron
 
Регистрация: 28.05.2008
Сообщений: 9
По умолчанию Прошу помочь с слиянием данных

Мужики, кто может помогите с таблицами, Excel не знаю, но по работе очень нужно это сделать. Есть 1 файл, в нем 2 листа, а в каждом листе списки льготников, надо чтобы получился 1 лист и если есть совпадение между листами, надо чтобы столбец "сумма" складывался у тех, кто в обоих списках. А так на выходном листе должны быть все без изменение (при совпадении) кроме столбца "сумма" а если совпадения нет, чтобы человек просто переносился. Я так думаю надо как - то сравнение реализовать по номеру удостоверения и фамилии наверно.

Очень прошу помочь, крайне надо по работе, как бы не уволили если не сделаю.
Вложения
Тип файла: zip 1.zip (480.3 Кб, 20 просмотров)
Neyron вне форума
Старый 28.05.2008, 09:15   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Запустите макрос "Main".
Если, например, фамилии на листах 1 и 2 совпадают, а номера удостоверений нет (и наоборот), то это рассматривается как разные записи. Так? После формирования общего списка, данные сортируются по фамилиям.
Вложения
Тип файла: rar 2.rar (10.8 Кб, 31 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 28.05.2008, 18:17   #3
Neyron
 
Регистрация: 28.05.2008
Сообщений: 9
По умолчанию

Благодарю! Выше всяких похвал! Все просто и профессионально! Лишний раз убеждаюсь, что программист - это достойнейшая профессия и должна уважаться больше, нежели сейчас принято в среде тех, кто плохо знаком с компьютерами.

Да, как разные, но знаете просматривая ОГРОМНЫЕ списки (я ведь просто кусок выдернул, дабы большой файл не закачивать) я подумал о том, что ведь может быть опечатка в удостоверении, запись весьма неудобно делают, а если будет опечатка - то человек будет "новый". Я вот думаю, может убрать фильтрацию по удостоверению и искать одинаковых людей по фамилии, улице, номеру дома и номеру корпуса (если он к примеру существует), при совпадении вышеперечисленных пунктов считать одним человеком и суммировать. Это я полагаю возможно сделать. Можете помочь? Я буду весьма благодарен.
Neyron вне форума
Старый 29.05.2008, 05:22   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В следующем примере контролируется совпадение людей по фамилии, улице, номеру дома и номеру корпуса и номеру квартиры. Все данные в этих ячейках должны быть записаны без лишних пробелов, но если есть необходимость, можно это поручить макросу.
Вложения
Тип файла: rar 3.rar (12.9 Кб, 31 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 29.05.2008, 21:41   #5
Neyron
 
Регистрация: 28.05.2008
Сообщений: 9
По умолчанию

Спасибо за помощь, но есть проблема, при условии, что сортировка отключена (либо без нее, но тогда сложнее вычислить) макрос падает после 255 строки, то есть 255 строчек он обрабатывает, а дальше все воспринимает как уникальные записи. Все это происходило при условии, когда на каждой странице было по 20 с лишним тысяч льготников. Вы говорили о пробелах, я немного не понял, но суть в том, что лучше пусть скрипт их убирает. Так как во всех столбцах кроме улицы пробелы легче убрать, нежели в столбце с улицей, ведь там надо маску задать для замены, ввида {любой количество букв и чисел } пробел - > заменить на пустоту.

Я прикладываю Файл с большим списком, прошу помочь разобраться с падением Вашего макроса после 255 строчки обсчета.

Файл размером 2 с лишним мегабайта не подргужался к сообщению - залил на файлообменник.

http://depositfiles.com/ru/files/5674782
Neyron вне форума
Старый 31.05.2008, 10:29   #6
Neyron
 
Регистрация: 28.05.2008
Сообщений: 9
По умолчанию

И еще буду очень благодарен если Вы уберете из макроса сравнение по корпусу.
Neyron вне форума
Старый 31.05.2008, 10:51   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
уберете из макроса сравнение по корпусу
поскольку SAS888 в данный момент нет на форуме, позволю себе предложить Вам следующее. Сведения о №корп. находятся в столбце F, так что достаточно удалить из условий сравнеия вот эту часть.
And .Cells(i, "F") = Cells(y.Row, "F")
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 31.05.2008, 14:27   #8
Neyron
 
Регистрация: 28.05.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
поскольку SAS888 в данный момент нет на форуме, позволю себе предложить Вам следующее. Сведения о №корп. находятся в столбце F, так что достаточно удалить из условий сравнеия вот эту часть.
And .Cells(i, "F") = Cells(y.Row, "F")
Спасибо. Но падения макроса это не убирает.
Neyron вне форума
Старый 31.05.2008, 14:41   #9
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Но падения макроса это не убирает.
так ведь и вопрос стоял о том, чтобы убрать из условия сравнения №корп. :-)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 02.06.2008, 05:18   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

К сожалению, не получается скачать файл по Вашей ссылке. Прикрепите архив во вложении. Формат, например, RAR - позволяет разместить объем до 7, 5 Мбайт.
Посмотрите вложение (пока с малым количеством данных). Здесь макрос убирает "лишние" пробелы и исключена проверка на совпадение данных в столбце "F". В коде макроса присутствуют небольшие комментарии.
Небольшое пояснение: лист 1 просто копируется в лист "Общий", затем проходим по всем строкам листа 2 и ищем совпадения значений в контролируемых столбцах листа "Общий". Нашли - складываем результаты. Не нашли - добавляем строку. Т.е. если есть повторяющиеся записи в листе 1, то они будут присутствовать и в листе "Общий". Нужно ли это отлавливать и исключать? Если "Да", то что при этом делать?
Попробуйте перенести этот макрос в Ваш рабочий файл и запустить (может дело именно в наличии "лишних" пробелов).
P.S. Работа макроса при большом количестве строк листов (десятки тысяч) может занимать несколько минут.
P.P.S Если не поможет - прикрепите все-таки Ваш большой файл.
Вложения
Тип файла: rar 4.rar (13.8 Кб, 27 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 02.06.2008 в 08:29. Причина: Добавлено
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помочь с заданием =(( Lexxich Помощь студентам 1 14.06.2008 12:34
Прошу помочь. Оплачу. dreo Фриланс 8 22.12.2007 00:35
прошу помочь начинающему программисту evgeni883 Свободное общение 7 26.09.2007 21:46
Прошу помочь с запросом MASTERKEY БД в Delphi 0 18.05.2007 15:15
Прошу по помочь с TMonthCalendar, Azamat_k Компоненты Delphi 12 04.04.2007 13:36