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

Подстановка значений по похожим данным на разных листах

02.01.2020, 20:40. Показов 738. Ответов 4

На фото лист1 с нужными данными.
На лист3 в колонках 8 и 9 ничего нет. И попадаются данные такие же как в лист1, это колонки 4 и 6 только зеркально наоборот. Например: в лист3 LAX в 4 колонке и NYC в 6 колонка и т.д
Задача: Надо подставить данные колонок 8 и 9 из лист1 в лист3 в колонки 8 и 9, если попадается соответствие.
Написал неправильно код, не выходит из цикла.
Что неправильно?
Не смейтесь сильно 6 код в моей жизни.
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
28
29
30
31
32
33
34
Sub Podstanovka()
Sheets(3).Activate
LR2 = Sheets(1).Cells(Rows.Count, 4).End(xlUp).Row
LR4 = Sheets(1).Cells(Rows.Count, 6).End(xlUp).Row
LR6 = Sheets(3).Cells(Rows.Count, 4).End(xlUp).Row
LR8 = Sheets(3).Cells(Rows.Count, 6).End(xlUp).Row
LR9 = Sheets(3).Cells(Rows.Count, 8).End(xlUp).Row
LR10 = Sheets(3).Cells(Rows.Count, 9).End(xlUp).Row
 
Application.ScreenUpdating = False
 
  For i = 2 To LR2
     For j = 2 To LR4
       For g = 2 To LR6
        For h = 2 To LR8
          For m = 2 To LR9
            For k = 2 To LR10
            
 
        If Sheets(1).Cells(i, 4).Value = Sheets(3).Cells(h, 6).Value And Sheets(1).Cells(j, 6).Value = Sheets(3).Cells(g, 4).Value Then
           Sheets(3).Cells(m, 8).Value = Sheets(1).Cells(i, 8).Value
           Sheets(3).Cells(k, 9).Value = Sheets(1).Cells(i, 9).Value
 
           Exit For
         End If
     Next
  Next
Next
Next
Next
Next
 
Application.ScreenUpdating = True
End Sub
0

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

Миниатюры
Подстановка значений по похожим данным на разных листах  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2020, 20:40
Ответы с готовыми решениями:

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

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

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

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

4
11245 / 3611 / 642
Регистрация: 13.02.2009
Сообщений: 10,776
03.01.2020, 00:16 2
А исходя из чего вы сделали вывод, что не выходит?
код предусматривает выход только из самого внутреннего цикла.
А там их 6 вложенных
И сколько данных на каждом листе тоже не понятно.
А с таким обращением с листом:
Visual Basic
1
If Sheets(1).Cells(i, 4).Value = Sheets(3).Cells(h, 6).Value And ...
Жизни может не хватить что бы дождаться окончания работы
Смотрите как работать с массивами, словарями....
2
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 15
03.01.2020, 17:01  [ТС] 3
Изменил код, сработал, но пока проверил для теста на 10 данных в столбце. На больших объемах не проверял ещё

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Podstanovka()
Sheets(3).Activate
LR2 = Sheets(1).Cells(Rows.Count, 4).End(xlUp).Row And Sheets(1).Cells(Rows.Count, 6).End(xlUp).Row
LR4 = Sheets(3).Cells(Rows.Count, 4).End(xlUp).Row And Sheets(3).Cells(Rows.Count, 6).End(xlUp).Row
Application.ScreenUpdating = False
For i = 2 To LR2
     For j = 2 To LR4
  If Sheets(1).Cells(i, 4).Value = Sheets(3).Cells(j, 6).Value And Sheets(1).Cells(i, 6).Value = Sheets(3).Cells(j, 4).Value Then
           Sheets(3).Cells(j, 8).Value = Sheets(1).Cells(i, 8).Value
           Sheets(3).Cells(j, 9).Value = Sheets(1).Cells(i, 9).Value
 
Exit For
         End If
     Next
  Next
Application.ScreenUpdating = True
End Sub
0
11245 / 3611 / 642
Регистрация: 13.02.2009
Сообщений: 10,776
03.01.2020, 17:34 4
Сколько лет планируешь прожить?
А с таким обращением с листом:
Visual Basic
1
If Sheets(1).Cells(i, 4).Value = Sheets(3).Cells(h, 6).Value And ...
Жизни может не хватить что бы дождаться окончания работы
Смотрите как работать с массивами, словарями....
Используйте тэги форматирования текста
0
6848 / 2786 / 525
Регистрация: 19.10.2012
Сообщений: 8,494
03.01.2020, 19:45 5
Для начала нужно это AND заменить на вложенное ЕСЛИ - уже возможно в 2 раза меньше ячеек проверять нужно будет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2020, 19:45

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

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

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

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


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

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

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