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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2015, 04:00   #1
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию сравнение столбцов

Добрый день!
Мне необходимо сравнить столбец А на листе1 со столбцом А на листе 3, и если нет в столбцеА на листе1, а есть на листе 3 дописать в конец листа 1. Что- то не работает. Может кто-нибудь подскажет почему.
Sub Добавление()

Dim lLastRowA As Long
Dim lLastRowC As Long
Dim i As Long
Dim rFind As Excel.Range

Sheets(3).Activate
lLastRowA = Cells(Rows.Count, "A").End(xlUp).Row

Sheets(1).Activate
lLastRowC = Cells(Rows.Count, "A").End(xlUp).Row + 1

Application.ScreenUpdating = False

Sheets(3).Activate
For i = 1 To lLastRowA Step 1
Set rFind = Sheets(3).Columns("A").Find(What:=S heets(1).Cells(i, "A").Text, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not rFind Is Nothing Then

Sheets(1).Cells(lLastRowC, "A").Value = Sheets(3).Cells(i, "A").Value
lLastRowC = lLastRowC + 1
End If

Next i

MsgBox "Работа завершена!", vbInformation

Application.ScreenUpdating = True

End Sub
Вложения
Тип файла: rar 1.rar (187.9 Кб, 10 просмотров)

Последний раз редактировалось evdss; 07.12.2015 в 04:50.
evdss вне форума Ответить с цитированием
Старый 07.12.2015, 05:25   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Работает. Только я бы переписал для начала так:
Код:
Sub Добавление()
    Dim lLastRowA As Long
    Dim lLastRowC As Long
    Dim i As Long
    Dim rFind As Excel.Range
    Dim SH As Worksheet
    'Определяем, где заканчиваются данные в столбце A,
    'чтобы знать, до какой строки нам работать.
    Application.ScreenUpdating = False
    With Sheets(3)
        lLastRowA = .Cells(.Rows.Count, 1).End(xlUp).Row
        'Определяем, с какой строки заносить данные в столбец A.
        Set SH = Sheets(1)
        lLastRowC = SH.Cells(SH.Rows.Count, 1).End(xlUp).Row + 1
        For i = 1 To lLastRowA Step 1
            Set rFind = .Columns(1).Find(What:=SH.Cells(i, 1).Text, LookIn:=xlValues, _
                LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
            If Not rFind Is Nothing Then
                SH.Cells(lLastRowC, 1).Value = .Cells(i, 1).Value
                lLastRowC = lLastRowC + 1
            End If
        Next i
    End With
    Application.ScreenUpdating = True
    MsgBox "Работа кода завершена!", vbInformation
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 07.12.2015, 05:41   #3
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию

спасибо, но когда я запускаю какие то данные дописываются, которые есть на листе один и почему выборочно, хотя и те которых нет дописываюся в конец
evdss вне форума Ответить с цитированием
Старый 07.12.2015, 05:55   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Если кто-то кое-де у нас порой... А конкретно выложить пример на 3 десятка строк и указать - вот это не добавило(а должно было), а это наоборот добавило(а не должно)? Рыться руками в >1000 строк в поисках того, не знаю чего мне недосуг.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 07.12.2015, 10:11   #5
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию

выгрузка идет из разных источников, поэтому типы данных разные.

Последний раз редактировалось evdss; 08.12.2015 в 03:34.
evdss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение столбцов Васильева Елена Microsoft Office Excel 7 05.11.2014 14:18
Сравнение столбцов Exel lirik88 Microsoft Office Excel 4 10.11.2011 18:01
Сравнение столбцов sidanarchy Microsoft Office Excel 7 25.02.2011 09:24
Сравнение столбцов Nakrul Microsoft Office Excel 11 17.02.2011 16:12
Сравнение столбцов в Excel Laa911 Microsoft Office Excel 61 21.08.2010 13:11