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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 16:54   #1
reanews
Новичок
Джуниор
 
Регистрация: 10.04.2009
Сообщений: 1
По умолчанию Помогите с сортировкой в MSExcel

Помогите c Excel потому как сам не дотягиваю!!! Имеем 2 списка в которых имена строк частично совпадают. в диапазоне (лист1 А1:А8500 лист2 A1:A4600) на втором листе напротив каждой строки есть значение которое необходимо присвоить такой же строке, при абсолютном совпадении, в первом листе, привожу простой пример:

лист1:
А _______________В________________ С
яблоко
груша
дыня
персик
ананас
слива

Лист2:

А ________________В

груша 44
персик 33
вишня 8

и есть один ньюанс необходимо в процессе работы создать еще 2 листа, т.е. Лист3 и лист 4 в который будут переноситься те строки которые остались уникальны в первых 2х листах, только обязательно целые строки т.к. в первой таблице после пустого столбца "В" далее продолжаются строки данных, т.е. опять пример для понятности происходящего:

лист3

А_______________В

Вишня 8



Лист 4

А_______________ В_______________С_______________D

Яблоко
Ананас
Слива

Я уже нашел код с сайта Микрософта, но долеко и не совсем то, что хотелось бы:

Sub DelDups_TwoLists()
Dim iListCount As Integer
Dim iCtr As Integer
Application.ScreenUpdating = False
iListCount = Sheets("Sheet2").Range("A1:A7715"). Rows.Count
For Each x In Sheets("Sheet1").Range("A1:A4878")
For iCtr = 1 To iListCount
If x.Value = Sheets("Sheet2").Cells(iCtr, 1).Value Then
Sheets("Sheet2").Cells(iCtr, 1).Clear
iCtr = iCtr + 1
End If
Next iCtr
Next
Application.ScreenUpdating = True
MsgBox "Готово"
End Sub

Только этот код удалял ячейки в столбце со сдвигов вверх, а напротив этих ячеек есть значения и в итоге получается путаница,

Sheets("Sheet2").Cells(iCtr, 1).Delete xlShiftUp

И поэтому пришлось заменить на:

Sheets("Sheet2").Cells(iCtr, 1).Clear

в итоге аолучается список с пустыми ячейками, напротив которого через нескколько строк я вставляю такой же, делаю фильтр по уже пустым ячейкам и остается то чего макрос не нашел на перввом листе и копирую значения на 3й лист, далее сортирую как все Не пустые и в правом листе остаються только те значения которые он нашел и опять копирую на 4й уже лист, а потом предполагаю поменять названия листов sheet1 на sheet2 и сделать наоборот и тогда у меня останется только уникальные значения из второго списка. Ну вот както так... Так что ситуация несколько не та, насколько я понимаю и эту ветку форума я изучил вроде.

Это слишком долго получается. сортировка на 1ядерном пне 2.2Гц 1,5Гб оперативы длиться 2часа примерно с небольшим. а тут надо минимум 2 раза сортировать....
reanews вне форума Ответить с цитированием
Старый 11.04.2009, 09:03   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Запустите макрос "Main".
На большом файле не проверял, но работать макрос должен достаточно быстро. Проверьте.
Вложения
Тип файла: rar Книга1.rar (9.1 Кб, 35 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с сортировкой maxic Microsoft Office Excel 5 21.02.2009 17:47
Помогите с сортировкой в C++. Vollmond36 Помощь студентам 1 02.12.2008 23:06
Помогите с сортировкой. Dissonance БД в Delphi 14 05.06.2008 15:35
Помогите с сортировкой radist Паскаль, Turbo Pascal, PascalABC.NET 5 23.04.2007 12:50