Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск значения ячейки на другом листе с заменой данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск значения ячейки на другом листе с заменой данных (Макросы/Sub)
Поиск значения ячейки на другом листе с заменой данных
igorek72rus Дата: Вторник, 30.08.2022, 06:53 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

Добрый день. Прошу помочь облазил всё форумы но ничего.... Скидываю пример https://dropmefiles.com/te3m0 . И полное описание задания:
0. Необходим макрос-кнопка
1. в листе "Высота" видим ячейку "фиолетовую" 3747(номер может меняться если там будет стоять другая фамилия) нужно именно поиск по значению ячейки. Обязательно чтобы искал точное значение не примерное.
2. значение данной ячейки нужно найти на листах "Вахта+Подменные" и "ИТР"
3.Данная ячейка находится на листе "Вахта+Подменные" отметил ее тоже "фиолетовым" для вашего удобства.
4. После того как нашлась ячейка на листе "Вахта +Подменные", ниже дата (02.10.2022) в данном случае ячейка H7
5. Ее нужно заменить на актуальную дату.
6. Источник замены даты находится на листе "Высота" в ячейке H6 (отметил синим) * к этой дате прибавить 1 год.
Итогом макроса должно стать изменение даты 02.10.2022 на 29.08.2023

Далее я планирую макрос расширить чтобы он искал не только значение фиолетовой ячейки но и значения оранжевых ячеек и сразу за один макрос.
 
Ответить
СообщениеДобрый день. Прошу помочь облазил всё форумы но ничего.... Скидываю пример https://dropmefiles.com/te3m0 . И полное описание задания:
0. Необходим макрос-кнопка
1. в листе "Высота" видим ячейку "фиолетовую" 3747(номер может меняться если там будет стоять другая фамилия) нужно именно поиск по значению ячейки. Обязательно чтобы искал точное значение не примерное.
2. значение данной ячейки нужно найти на листах "Вахта+Подменные" и "ИТР"
3.Данная ячейка находится на листе "Вахта+Подменные" отметил ее тоже "фиолетовым" для вашего удобства.
4. После того как нашлась ячейка на листе "Вахта +Подменные", ниже дата (02.10.2022) в данном случае ячейка H7
5. Ее нужно заменить на актуальную дату.
6. Источник замены даты находится на листе "Высота" в ячейке H6 (отметил синим) * к этой дате прибавить 1 год.
Итогом макроса должно стать изменение даты 02.10.2022 на 29.08.2023

Далее я планирую макрос расширить чтобы он искал не только значение фиолетовой ячейки но и значения оранжевых ячеек и сразу за один макрос.

Автор - igorek72rus
Дата добавления - 30.08.2022 в 06:53
Pelena Дата: Вторник, 30.08.2022, 09:36 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 18556
Репутация: 4203 ±
Замечаний: ±

Excel 2016 & Mac Excel
Здравствуйте.
Примерно так. Запускать с листа Высота
[vba]
Код
Public Sub SetActualDate()
    Dim shV As Worksheet, shITR As Worksheet, rng As Range
    Dim ActualDate As Date, Nudost As String, r0 As Long, r1 As Long, i As Long

    Set shV = ThisWorkbook.Sheets("Вахта+Подменные")
    Set shITR = ThisWorkbook.Sheets("ИТР")

    ActualDate = ActiveSheet.Range("H6")
    r0 = 27
    r1 = 42

    For i = r0 To r1
        If ActiveSheet.Cells(i, "G") <> "" Then
            Nudost = ActiveSheet.Cells(i, "G")
            Set rng = shV.Columns(8).Find(What:=Nudost, LookAt:=xlWhole)
            If Not rng Is Nothing Then
                rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
            Else
                Set rng = shITR.Columns(8).Find(What:=Nudost, LookAt:=xlWhole)
                If Not rng Is Nothing Then rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
            End If
        End If
    Next i
End Sub
[/vba]
в файле лишние листы удалила, чтобы влез на форум
К сообщению приложен файл: TESTv2.8-1-.xlsm(461.1 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Примерно так. Запускать с листа Высота
[vba]
Код
Public Sub SetActualDate()
    Dim shV As Worksheet, shITR As Worksheet, rng As Range
    Dim ActualDate As Date, Nudost As String, r0 As Long, r1 As Long, i As Long

    Set shV = ThisWorkbook.Sheets("Вахта+Подменные")
    Set shITR = ThisWorkbook.Sheets("ИТР")

    ActualDate = ActiveSheet.Range("H6")
    r0 = 27
    r1 = 42

    For i = r0 To r1
        If ActiveSheet.Cells(i, "G") <> "" Then
            Nudost = ActiveSheet.Cells(i, "G")
            Set rng = shV.Columns(8).Find(What:=Nudost, LookAt:=xlWhole)
            If Not rng Is Nothing Then
                rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
            Else
                Set rng = shITR.Columns(8).Find(What:=Nudost, LookAt:=xlWhole)
                If Not rng Is Nothing Then rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
            End If
        End If
    Next i
End Sub
[/vba]
в файле лишние листы удалила, чтобы влез на форум

Автор - Pelena
Дата добавления - 30.08.2022 в 09:36
igorek72rus Дата: Вторник, 30.08.2022, 10:27 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

Pelena, Это превосходно, счастьем переполняет душу. Огромное спасибо))
 
Ответить
СообщениеPelena, Это превосходно, счастьем переполняет душу. Огромное спасибо))

Автор - igorek72rus
Дата добавления - 30.08.2022 в 10:27
igorek72rus Дата: Вторник, 30.08.2022, 19:06 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 20% ±

Pelena, [vba]
Код
Dim shV As Worksheet, shITR As Worksheet, rng As Range
Dim ActualDate As Date, Nudost As String, r0 As Long, r1 As Long, i As Long

Set shV = ThisWorkbook.Sheets("Вахта+Подменные")
Set shITR = ThisWorkbook.Sheets("ИТР")

ActualDate = ActiveSheet.Range("H6")
r0 = 27
r1 = 42

For i = r0 To r1
If ActiveSheet.Cells(i, "G") <> "" Then
Nudost = ActiveSheet.Cells(i, "G")
Set rng = shV.Columns(11).Find(What:=Nudost, LookAt:=xlWhole)
If Not rng Is Nothing Then
rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
Else
Set rng = shITR.Columns(8).Find(What:=Nudost, LookAt:=xlWhole)
If Not rng Is Nothing Then rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
End If
End If
Next i
End Sub
[/vba]

В данном макросе прибавляется 1 год, а если мне нужно в одном листе не год прибавить а 3 месяца, как изменится макрос?
 
Ответить
СообщениеPelena, [vba]
Код
Dim shV As Worksheet, shITR As Worksheet, rng As Range
Dim ActualDate As Date, Nudost As String, r0 As Long, r1 As Long, i As Long

Set shV = ThisWorkbook.Sheets("Вахта+Подменные")
Set shITR = ThisWorkbook.Sheets("ИТР")

ActualDate = ActiveSheet.Range("H6")
r0 = 27
r1 = 42

For i = r0 To r1
If ActiveSheet.Cells(i, "G") <> "" Then
Nudost = ActiveSheet.Cells(i, "G")
Set rng = shV.Columns(11).Find(What:=Nudost, LookAt:=xlWhole)
If Not rng Is Nothing Then
rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
Else
Set rng = shITR.Columns(8).Find(What:=Nudost, LookAt:=xlWhole)
If Not rng Is Nothing Then rng.Offset(1) = DateAdd("yyyy", 1, ActualDate)
End If
End If
Next i
End Sub
[/vba]

В данном макросе прибавляется 1 год, а если мне нужно в одном листе не год прибавить а 3 месяца, как изменится макрос?

Автор - igorek72rus
Дата добавления - 30.08.2022 в 19:06
RAN Дата: Вторник, 30.08.2022, 19:30 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5630
Репутация: 1143 ±
Замечаний: 0% ±

2010
DateAdd в справке влом посмотреть?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеDateAdd в справке влом посмотреть?

Автор - RAN
Дата добавления - 30.08.2022 в 19:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск значения ячейки на другом листе с заменой данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2022 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!