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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2019, 21:06   #1
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию Условие if else в цикле for

Доброго времени суток. Пишу макрос, но получаю ошибку.
Код:
Макрос1()
    Dim i&, j&
    For i = 3 To 10
        For j = 7 To 10
            Sheets("Лист3").Range("C1") = i
            Sheets("Лист3").Range("C2") = j
              
            'If Sheets("Лист2").Range("1 + i" & "1 + j") = Sheets("Лист3").Range("1 + i" & "1 + j") And Sheets("Лист2").Range("1 + i" & "2 + j") = Sheets("Лист3").Range("1 + i" & "2 + j") And Sheets("Лист2").Range("1 + i" & "4 + j") = Sheets("Лист3").Range("1 + i" & "4 + j") And Sheets("Лист2").Range("1 + i" & "5 + j") = Sheets("Лист3").Range("1 + i" & "5 + j") Then
            If Sheets("Лист2").Range(1 + i & 1 + j) = Sheets("Лист3").Range(1 + i & 1 + j) And Sheets("Лист2").Range(1 + i & 2 + j) = Sheets("Лист3").Range(1 + i & 2 + j) And Sheets("Лист2").Range(1 + i & 4 + j) = Sheets("Лист3").Range(1 + i & 4 + j) And Sheets("Лист2").Range(1 + i & 5 + j) = Sheets("Лист3").Range(1 + i & 5 + j) Then
            
            Sheets("Лист2").Range("1 + i" & "3 + j").Copy
            Sheets("Лист3").Range("3 + i" & "1 + j").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            
            End If
        Next
    Next
    MsgBox "Завершено"
End Sub
Задача макроса следующая: сравнивает значения ячеек на листе1 со значениями ячеек на листе 2 в цикле, если значения в ячейках совпадают, то одно значение копируется с листа2 в лист3. Макрос должен сравнить весь текст на листе2 со всем текстом на листе3 и при условии выполнить копирование.
Объяснил скорее всего криво, прикладываю файл, текс выделенный красным на листе 2 должен заменить текст выделенный красным на листе3.
Вложения
Тип файла: xlsx 333.xlsx (973.4 Кб, 14 просмотров)
ЫЫЫЫЫЫ

Последний раз редактировалось Petrov210217; 30.09.2019 в 21:11.
Petrov210217 вне форума Ответить с цитированием
Старый 30.09.2019, 23:40   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Вы бы обьяснили что с чем сравнивать и что потом скопировать
потому что понять это на основании текста Вашего макроса - не возможно)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.10.2019, 04:57   #3
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

На листах 2 и 3 есть текст. Сравниваем текст на листе 3 с текстом на листе 2. Сравниваем текст в ячейках а1,а2,а4,а5 на листе 3 с текстом в ячейках а1,а2,а4,а5 на листе 2. Если текст в ячейках а1,а2,а4,а5 на листе 3 полностью соответствует тексту в ячейках а1,а2,а4,а5 на листе 2, то копируем текст с ячейки а3 листа 2 в ячейку а3 листа3, если условие не выполнено, то ничего не делаем, идем дальше.
Затем смещаемся на 1 ячейку и повторяем процесс(Сравниваем текст в ячейках а2,а3,а5,а6 на листе 3 с текстом в ячейках а2,а3,а5,а6 на листе 2.) и тд. когда строка кончилась, переходим на вторую строку, задача пройти весь текст. Диапазон ячеек, которые нужно пройти я задал в макросе (For i = 3 To 10
For j = 7 To 10). Если ячейка пустая, то все равно сравнивать, но не копировать значения с листа 2 на лист 3
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Старый 01.10.2019, 10:36   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Файл не смотрел, но сомневаюсь что там есть диапазон с таким именем:
Range("1 + i1 + j")
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.10.2019, 11:40   #5
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

Ошибку выдает в строке условия If. Пологаю, что я не правильно задал условия или передаю в условия текст из ячейки.
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Старый 01.10.2019, 11:46   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну так в той строке и есть этот диапазон.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.10.2019, 18:37   #7
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Файл не смотрел, но сомневаюсь что там есть диапазон с таким именем:
Range("1 + i1 + j")
Три раза просмотрел код, а такого не увидел.
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Старый 01.10.2019, 19:32   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Petrov210217 Посмотреть сообщение
Sheets("Лист2").Range("1 + i" & "3 + j").Copy
ну Range("1 + i3 + j") есть, что оно обозначает?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.10.2019, 19:32   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да, извиняюсь, подслеповат вероятно рабочий монитор - теперь вижу что это в закоментированной строке.
Но всё равно, там есть аналогичное
Range("1 + i" & "3 + j")
Ну а то, что активно - тоже сомневаюсь что есть диапазон Range(48)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 01.10.2019, 19:58   #10
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

Так как записать правильно?
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие в PHP - Не работает условие: не выводит сообщение. Ave_Ave_Ave PHP 13 17.06.2016 12:20
условие в цикле govorun1 БД в Delphi 33 15.01.2014 20:58
Условие в цикле HiDunay Общие вопросы C/C++ 2 29.11.2013 19:03
условие в цикле с блокировкой колонок KSTeeen Microsoft Office Excel 9 18.11.2012 22:15
условие в цикле Николай Сергеевич Общие вопросы C/C++ 8 24.12.2009 14:25