mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Поиск значения на листе относительно ячейки с заданным текстом

Function FindAndInsert(ByRef sh As Worksheet, ByVal txt As String, _
                       ByVal OffsetY As Long, ByVal OffsetX As Long, Optional ByVal NewValue = Null) As Range
    ' ищет на листе sh ячейку, содержащую текст txt,
    ' после чего (если задано значение NewValue) в ячейку со смещением OffsetY , OffsetX
    ' вставляет формулу (в стиле R1C1) NewValue
    ' Возвращает ячейку, предназначенную для вставки
    On Error Resume Next: Err.Clear
    Set FindAndInsert = sh.UsedRange.Find(txt, , xlValues, xlPart)      '.MergeArea.Cells(1)
    If FindAndInsert Is Nothing Then
        Debug.Print "Не найдена ячейка", "Лист: """ & sh.Name & """, строка """ & txt & """", 2
        Err.Clear: Exit Function
    End If
    'Debug.Print FindAndInsert.Address, FindAndInsert.Offset(OffsetY, OffsetX).Address
    Set FindAndInsert = FindAndInsert.Offset(OffsetY, OffsetX)
    If IsNull(NewValue) Then Exit Function
 
    Err.Clear: FindAndInsert.FormulaR1C1 = NewValue
    If Err Then
        Debug.Print "Не удалось вставить формулу", "Лист: """ & sh.Name & """, формула """ & _
                                                   NewValue & """, ячейка " & FindAndInsert.Address, 2
        Err.Clear: Exit Function
    End If
End Function

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
          ___      _      _   _    ___          
_ _ |_ _| / \ | | | | / _ \ __ __
| | | | | | / _ \ | |_| | | | | | \ \ / /
| |_| | | | / ___ \ | _ | | |_| | \ V /
\__,_| |___| /_/ \_\ |_| |_| \__\_\ \_/
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.