Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 93
1

Не работает поиск разных значений на разных листах

06.04.2015, 12:37. Показов 1459. Ответов 9
Метки нет (Все метки)

Доброго времени суток, дан код, он из учебника, по поиску разных значений на разных листах, но он не хочет работать, а программа очень нужна
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Поиск_разных_значений()
    Dim lLastRowA As Long
    Dim lLastRowB As Long
    Dim lLastRowC As Long
    Dim rFind As Excel.Range
    lLastRowA = Лист7.Cells(Rows.Count, "A").End(xlUp).Row
    lLastRowB = Лист8.Cells(Rows.Count, "A").End(xlUp).Row
    lLastRowC = 2
   Лист9.Range("A2:A100").ClearContents
    Application.ScreenUpdating = False
    
    For i = 2 To lLastRowA Step 1
        Set rFind = Sheets(a).Columns("A").Find(What:=Лист7.Cells(i, "A").Text, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        If rFind Is Nothing Then
            Лист8.Cells(lLastRowC, "A").Value = Лист7.Cells(i, "A").Value
            lLastRowC = lLastRowC + 1
        End If
    Next i
    
    Application.ScreenUpdating = True
    MsgBox "ГОТОВО!", vbInformation
End Sub
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2015, 12:37
Ответы с готовыми решениями:

Поиск одинаковых значений на разных листах
Доброго времени суток, я столкнулся с проблемой написании кода, который будет сравнивать два...

Поиск одинаковых значений на разных листах
Имеется книга со множеством листов. В листе есть столбец с id, этот самый id совпадает в некоторых...

Поиск и суммирование значений по условию в разных листах
Доброго времени суток! У меня в книге Экзеля есть около 80 листов, нужно переодически суммировать...

Подстановка значений по похожим данным на разных листах
На фото лист1 с нужными данными. На лист3 в колонках 8 и 9 ничего нет. И попадаются данные такие...

9
409 / 259 / 80
Регистрация: 27.10.2012
Сообщений: 853
06.04.2015, 12:50 2
Вы бы файлик приложили к коду.
0
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 93
06.04.2015, 13:13  [ТС] 3
вот пример, т.е. нужно сравнить 2 столбца на разные значения, и вывести результат
0
Вложения
Тип файла: xlsx пример.xlsx (10.6 Кб, 7 просмотров)
3992 / 1389 / 382
Регистрация: 07.08.2013
Сообщений: 3,483
06.04.2015, 13:27 4
Цитата Сообщение от medved_program Посмотреть сообщение
Sheets(a).
с чего она работать будет
а- чему равно?
0
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 93
06.04.2015, 13:42  [ТС] 5
в учебнике так...

Добавлено через 9 минут
Цитата Сообщение от medved_program Посмотреть сообщение
Set rFind = Sheets(a).Columns("A").Find(What:=Лист7.Cells(i, "A").Text, LookIn:=xlValues, _
Возможно там имеется ввиду Лист8
0
3992 / 1389 / 382
Регистрация: 07.08.2013
Сообщений: 3,483
06.04.2015, 13:51 6
Лучший ответ Сообщение было отмечено medved_program как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub macro1()
Set objConnection = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"";"
strSQL = "SELECT a2.[1 столб]"
strSQL = strSQL & " FROM [Лист1$] AS a2 LEFT JOIN [Лист2$] AS a1 ON a2.[1 столб] = a1.[2 столб]"
strSQL = strSQL & " WHERE (((a1.[2 столб]) Is Null))"
strSQL = strSQL & " GROUP BY a2.[1 столб]"
strSQL = strSQL & " ORDER BY a2.[1 столб];"
rs.Open strSQL, objConnection, 3, 3
Sheets("Лист3").Cells(2, 1).CopyFromRecordset rs
Set rs = Nothing
Set objConnection = Nothing
End Sub
1
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 93
06.04.2015, 13:54  [ТС] 7
Огромное спасибо, с кодом из учебника что? вообще не правильный?
0
3992 / 1389 / 382
Регистрация: 07.08.2013
Сообщений: 3,483
06.04.2015, 13:57 8
я прочитал всего один учебник
MS Access 2003 Харитоновой
что с этим кодом я не знаю
и даже не хочу копаться - по одной простой причине - лень
( у каждого проггера есть маленькие наработки которые РАБОТАЮТ
а что там пишут в учебниках - одним авторам только и известно)
0
15037 / 6364 / 1726
Регистрация: 24.09.2011
Сообщений: 9,976
06.04.2015, 22:40 9
Цитата Сообщение от medved_program Посмотреть сообщение
дан код, он из учебника
Что, этот код прям целиком из учебника, или Вы его из разных глав скопипастили?
В этом учебнике в начале написано "зайти в Tools - Options - Editor и включить "Require Variable Declaration"?
Если написано - сделайте так, и вопросов "почему не работает" станет гораздо меньше.
Если не написано - все равно сделайте, а учебник выкиньте нах.

Добавлено через 13 минут
Вот исправленный код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit
 
Sub Поиск_разных_значений()
    Dim lLastRowA As Long
'    Dim lLastRowB As Long
    Dim lLastRowC As Long
    Dim rFind As Excel.Range
    Dim i As Long
    lLastRowA = Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
'    lLastRowB = Лист8.Cells(Rows.Count, "A").End(xlUp).Row
    lLastRowC = 2
    Sheets(3).Range("A2:A100").ClearContents
    Application.ScreenUpdating = False
    
    For i = 2 To lLastRowA Step 1
        Set rFind = Sheets(2).Columns("A").Find(What:=Sheets(1).Cells(i, "A").Text, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        If rFind Is Nothing Then
            Sheets(3).Cells(lLastRowC, "A").Value = Sheets(1).Cells(i, "A").Value
            lLastRowC = lLastRowC + 1
        End If
    Next i
    
    Application.ScreenUpdating = True
    MsgBox "ГОТОВО!", vbInformation
End Sub
0
4116 / 2222 / 939
Регистрация: 01.12.2010
Сообщений: 4,625
06.04.2015, 23:10 10
Если кому-то интересно откуда, что называется, растут ноги, то здесь здесь можно найти аналогичную тему, где уже есть и решение и автор темы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2015, 23:10

Проверка на совпадение значений ячеек на разных листах
Доброго дня, есть файлик с двумя листами. нужно сравнить есть ли значения из столбца А(на листе...

Сравнение значений ячеек на разных листах Excel и их перенос
Доброго Вам времени суток, уважаемие знатоки!!! Нужна Ваша помощь и подсказки. На листе 1 есть...

Сравнение двух пар столбцов в разных листах и вывод значений
Добрый день! Очень нужна помощь в написании макроса. На листе 1 есть данные в столбцах*B*и*G, на...

Сравнение диапазонов значений на разных листах
Здравствуйте, помогите сравнить 4 столбца, желательно формулой если можно. Есть два столбца "имя"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.