Страницы: 1
RSS
Сравнение двух числовых массивов.
 
Здравствуйте! Поискал на форуме нужный мне ответ, не нашел.  
Есть два числовых столбца - задача сравнить первый массив со вторым и вывести те числа в отдельную строку либо столбец, которых нет во втором массиве.    
 
Помогите кто чем может!!!    
                 
            Заранее выражаю благодарность откликнувшимся на проблему!
 
Sub wwww()  
Dim x As Range  
Dim y As Range  
s1 = 1 'столб со значениями которые ищем  
s2 = 3 'столб в котором ищем  
s3 = 4 'столб в который записываем НЕ найденные  
Columns(s3).Clear  
Set x = Range(Cells(1, s1), Cells(Cells(Rows.Count, s1).End(xlUp).Row, s1))  
Set y = Range(Cells(1, s2), Cells(Cells(Rows.Count, s2).End(xlUp).Row, s2))  
i = 1  
For Each w In x  
 If y.Find(w, LookAt:=xlWhole) Is Nothing Then  
 Cells(i, s3) = w  
 i = i + 1  
 End If  
Next  
Beep  
End Sub
 
Sub wwww()  
Dim x As Range  
Dim y As Range  
s1 = 1 'столб со значениями которые ищем  
s2 = 3 'столб в котором ищем  
s3 = 4 'столб в который записываем НЕ найденные  
Columns(s3).Clear  
Set x = Range(Cells(1, s1), Cells(Cells(Rows.Count, s1).End(xlUp).Row, s1))  
With x  
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=x _  
, Unique:=True  
End With  
Set y = Range(Cells(1, s2), Cells(Cells(Rows.Count, s2).End(xlUp).Row, s2))  
i = 1  
For Each w In x.SpecialCells(xlCellTypeVisible)  
 If y.Find(w, LookAt:=xlWhole) Is Nothing Then  
 Cells(i, s3) = w  
 i = i + 1  
 End If  
Next  
Me.ShowAllData  
Beep  
End Sub
 
Я не силён в в программировании, а можно с помощью формулы или как ваш код применить мне????
 
Мне пришло грозное письмо из органов о необходимости перехода на лицензионное ПО.  
Думаю придётся переходить на лицензионный Excel, освежив версию до 2010. :(  
А пока файл в формате xls приложите...
 
прикрепляю
 
Проверяем.  
Число сообщений - 1111 !!!!!!!  
До конца недели буду Не поститься, дабы не испортить :)
 
Option Explicit  
 
'Макросом -  
'1.два диапазона в два массива  
'2.создание массива для результатов  
'3.один перебор n значений массива в словарь  
'4.m проверок массива на наличие в словаре и заполнение данными массива результата  
'5.выгрузка результатов (тут нет предварительной очистки диапазона)  
 
Sub compare()  
   Dim a(), b(), c(), i As Long, ii As Long  
 
   '1.  
   a = [d3].CurrentRegion.Value
   b = [f3].CurrentRegion.Value
 
   '2.  
   ReDim c(1 To UBound(a), 1 To 1)  
 
   With CreateObject("Scripting.Dictionary")  
 
       '3.  
       For i = 1 To UBound(b)  
           .Item(b(i, 1)) = 0&  
       Next  
 
       '4.  
       For i = 1 To UBound(a)  
           If Not .exists(a(i, 1)) Then ii = ii + 1: c(ii, 1) = a(i, 1)  
       Next  
         
   End With  
 
   '5.  
  [h3].Resize(ii, 1) = c
 
End Sub
 
Карен, чего-то врёт фильтр - вот эти есть в обоих списках:  
 
1-38/2012  
1-52/2012  
1-65/2012  
1-114/2012  
1-117/2012  
1-109/2012  
1-84/2012  
 
У меня недавно было 11111 - тоже пару постов разлогиненным писал :)
 
И кстати - числовыми массивами тут и "не пахнет"!
 
Да, действительно врёт. :(  
Скрытые фильтром не проверяет?  
У нас эвакуация по случаю окончания рабочего дня. Завтра разберу....  
Подпись: Карен.
 
Спасибо за суету Карен. Буду ждать завтрашнего дня.
 
Ну ждите, ждите... :)
 
clever2012  
http://www.planetaexcel.ru/plex_features.php  
В надстройке есть "Сравнение диапазонов" (раздел 2). Ваши столбцы сравнились и данные правильно вывелись.
 
Замечательная вещь. Спасибо за совет. Тема закрыта
Страницы: 1
Читают тему
Наверх