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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2010, 12:45   #31
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цвета я не определял,но слияние работает.Посмотрите-у вас такой финал
Вложения
Тип файла: rar Отчет.rar (352.0 Кб, 11 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 13.07.2010, 10:00   #32
CooperMan
 
Регистрация: 30.12.2009
Сообщений: 7
По умолчанию

Так я и не разобрался...
К сожалению рабочий интеренет не позволяет делать вложения и работать с файлообменниками, поэтому попробую изложить вопрос так:

Код:
"Лист1"

     А      B      C
1   200   354556  12,01
2   300   345367  12,01
3   234   839472  13,6
4   523   234584  23,0

"Лист2"

     А      B      C
1   200   354556  
2   300   345367  
3         523456
4
Выполняется макрос:

Код:
Sub Sravnil_esli_da_to_vstavil_esli_net_ishem_dalshe()
Windows("Книга1.xlsm").Activate
 
Dim i As Long, j As Long, EndRow1 As Long, EndRow2 As Long
 
EndRow1 = Sheets("Лист1").Range("A1").End(xlDown).Row
EndRow2 = Sheets("Лист2").Range("A1").End(xlDown).Row
 
For i = 1 To EndRow1
    For j = 1 To EndRow2
  
        If Sheets("Лист1").Cells(i, 1).Value & Sheets("Лист1").Cells(i, 2).Value = Sheets("Лист2").Cells(j, 1).Value & Sheets("Лист2").Cells(j, 2) Then
           Sheets("Лист2").Cells(i, 3).Value = Sheets("Лист1").Cells(j, 3).Value
        Else: End If
            
    Next j
Next i
 
End Sub
...и вроде бы работает. Требуется сравнить значения двух (A, B) столбцов листа2 с листом1 и при идентичности заполнить столбец C листа 2, данными листа1 столбец C соответственно. НО! Сравнение идет только до первой пустой ячейки (лист2, ячейка A3). Как сделать, чтоб при удовлетворении хотя бы одного условия заполнялся столбец C и поиск не прекращался до конца листа, если "ниже" все таки есть данные?
CooperMan вне форума Ответить с цитированием
Старый 13.07.2010, 10:55   #33
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Попробуйте так
Код:
Sub Comprare_L()
Windows("Книга1.xlsm").Activate
 
Dim i As Long, j As Long, EndRow1 As Long, EndRow2 As Long
 
EndRo1 = Sheets("Лист1").UsedRange.Row - 1 + Sheets("Лист1").UsedRange.Rows.Count

EndRow2 = Sheets("Лист2").UsedRange.Row - 1 + Sheets("Лист2").UsedRange.Rows.Count
 
For i = 1 To EndRow1
    For j = 1 To EndRow2
  
        If Sheets("Лист1").Cells(i, 1).Value = Sheets("Лист2").Cells(j, 1).Value Or _
        Sheets("Лист1").Cells(i, 2).Value = Sheets("Лист2").Cells(j, 2) Then
           Sheets("Лист2").Cells(i, 3).Value = Sheets("Лист1").Cells(j, 3).Value
        End If
            
    Next j
Next i
 
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 13.07.2010, 11:32   #34
CooperMan
 
Регистрация: 30.12.2009
Сообщений: 7
По умолчанию

Работает!
Объясните пожалуйста как работает вот эта часть: Sheets("Лист1").UsedRange.Row - 1 + Sheets("Лист1").UsedRange.Rows.Coun t
CooperMan вне форума Ответить с цитированием
Старый 13.07.2010, 11:47   #35
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

UsedRange — прямоугольная область, включающая все заполненные ячейки и незаполненные, в промежутках между заполненными ячейками, на листе. Координаты области не обязательно начинаются в ячейке A1

Sheets("Лист1").UsedRange.Row -координаты строки начала области

Sheets("Лист1").UsedRange.Rows.Coun t количество строк в области

поэтому координаты последней строки=
начальная координата-1 + количество строк
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 13.07.2010 в 12:01.
doober вне форума Ответить с цитированием
Старый 13.07.2010, 12:07   #36
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ещё можно использовать
Cells.SpecialCells(xlLastCell).Row

Sub tt()
x = Cells.SpecialCells(xlLastCell).Row
End Sub

Но это считает и форматы (без данных) тоже.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 19.07.2010, 11:51   #37
Soul Leka
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 13
По умолчанию

Простите, что потерялась - было много работы.

Ваше видео сравнила со своим - отрабоатывает на тестовых файлах нормально.
Но когда подкладываешь 2 реальных файла - строки задваиваются.
В файлах добавлены в конце по 3 столбца. В первом файле в столбцах стоят даты, во втором - столбцы пустые.
В итоговом файле получается, что если строки совпадают, то он их дублирует и ставит 2 строки - отличаются они между собой данными в столбцах "добавлен"\"удален".
Если строки в первом файле не было, то он успешно ее добавляет.
Soul Leka вне форума Ответить с цитированием
Старый 19.07.2010, 14:36   #38
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Отписался в личку
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение данных из двух и более книг Excel 2003 Елена20.12.1987 Microsoft Office Excel 0 20.04.2010 18:56
сравнение двух строк aza_kaz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.01.2010 23:40
Сравнение строк, добавление если false Des Общие вопросы Delphi 6 20.08.2009 12:32
сравнение данных в двух столбцах в Excel 2003 grinders Microsoft Office Excel 4 25.11.2008 16:58
Сравнение данных из двух книг Excel 2003 ast1r Microsoft Office Excel 2 24.11.2008 21:39