Страницы: 1
RSS
Поиск и копирование на новый лист совпадающих и несовпадающих ячеек
 
Здравствуйте, столкнулся с проблемой сравнения ячеек между двумя столбцами: при этом 1) если ячейка из столбца "C" совпадает с ячейкой из столбца "A", то скопировать ее на лист2, 2) а если у нее в другом столбе нет совпадений, то скопировать ее на лист3. С первой задачей справился, а вот скопировать уникальную найденную ячейку не получается.    
 
Пример кода:  
Sub Poisk()  
  Dim LastRow_1, LastRow_3, i  
  Dim Ran_1 As Range, Ran_3 As Range, Cel_1 As Range, Cel_3 As Range, temp1 As Range, temp2 As Range  
  Dim IsFind As Boolean  
  IsFind = False  
   i = 2  ' чтобы не захватывать названия столбов  
  LastRow_1 = Cells(Cells.Rows.Count, 1).End(xlUp).Row 'до куда бежать по списку товаров на складе  
  LastRow_3 = Cells(Cells.Rows.Count, 3).End(xlUp).Row ' до куда бежать по списку товаров в магазине  
  With Sheets("Лист1")  
     
       Set Ran_3 = Range(.Cells(1, 3), .Cells(LastRow_3, 3)) 'диапозон - длина перебора складских товаров  
       Set Ran_1 = Range(.Cells(1, 1), .Cells(LastRow_1, 1)) 'диапозон - длина перебора товаров в магазине  
       Ran_1.Font.Bold = False  
         
  End With  
     
  For Each Cel_3 In Ran_3  
       IsFind = False  
       For Each Cel_1 In Ran_1  
          'убираем все лишние знаки и пробелы и сравниваем две строки  
          If (Not IsFind) Then  
          If Chistka(Cel_1.Text) Like "*" & Chistka(Cel_3.Text) Then' функция chistka написана отдельно для очистки от ненужных символов  
                    Cel_1.Font.Bold = True  
                    Cel_1.Cells(1, 1).Copy Sheets("Лист2").Cells(i, 1)' копируем нужные ячейки на другой лист  
                    Cel_1.Cells(1, 2).Copy Sheets("Лист2").Cells(i, 2)  
                    Cel_3.Cells(1, 2).Copy Sheets("Лист2").Cells(i, 3)  
                    i = i + 1  
                    IsFind = True  
                 End If  
           End If  
       Next Cel_1  
         
  Next Cel_3  
     
     
End Sub
 
ТО есть по сути надо эту функцию переписать так, чтобы она копировала ненайденные из столба "C" в столбе "A" ячейки на другой лист
 
Давайте небольшой файл-пример.
 
не получается файл урезать до 100kb, поэтому залил на внешний серв http://file.qip.ru/file/atiMbdyU/default.htm весит 136kb  
 
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Нет, вру, файл прикрепился :)))
 
ciklon, Ваш файл забрал с файлообменника. И зачем такой размер - 3м? Посмотрите на Лист2 - сколько задействовано столбцов и строк? Столбцы - ВСЕ(!), строк - более 32000. И при этом данные всего лишь в диапазоне А1:Е19.  
По теме. Как Вы собираетесь в дальнейшем обрабатывать столбец Е, где Вы сцепили ID и цену. Это действительно так и нужно? Ведь там уже не числа, а текст. С какой целью создаётся этот столбец? Может найдём другой подход?  
P.S. Следите за размером файлов. Файл заново выкладывать не нужно!
 
И не понял относительно совпадений: Лист2, строка 2. В какой строке на первом листе есть такое совпадение?
 
Вопрос а как сделать так чтобы эти строки и столбцы были не задействованны? Столбец Е мне нужен потом для загрузки на сайт, по сути он тут не нужен, просто забыл его удалить. Лист2, строка 2 - поищите лучше, есть такое совпадение. Скрипт вроде ищет правильно, проверял. А про другой подход какие есть мысли? Перебор то вроде точно такой же нужен, только нужно поменять данную функцию на обратную - находить уникальные и копировать их
 
{quote}{login=ciklon}{date=02.08.2010 01:36}{thema=}{post} Лист2, строка 2 - поищите лучше, есть такое совпадение.{/post}{/quote}  
Это Вы поищите - помощь кому нужна? Давайте сделаем так: в новую книгу скопируйте данные (не лист целиком, а только данные) с Лист1. На втором листе покажите пару строк, для которых есть совпадения и на первом листе покрасьте эти строки, например в жёлтый. Ну и пару строк на третий лист - чтобы было ясно, в каком виде это нужно. Столбец Е сформировать макросом не проблема. Хотел просто уточнить относительно формата. Столбец F также можно формировать в коде, отталкиваясь от значения в ячейке G1.
 
отправляю, на 2 листе найденные строки. на 3 листе - строки из второго столбца, ненайденные в первом
 
Это Вы так скопировали данные из исходного файла? Пример с реальными данными будет?
 
Для имеющихся данных.
 
Юрий, спасибо большое. Уезжал в командировку, поэтому не сразу поблагодарил.
 
А как бы добавить проверку на неполное совпадение ячеек типа:  
If Cel_1.Text Like "*" & Cel_3.Text Then  
 
А то я немного в Вашем коде не понимаю как идет сравнение ячеек,
Страницы: 1
Читают тему
Наверх