Установить именованный диапазон из выбранных ячеек

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

Я попытался записать макрос и адаптировать его под свои нужды, но не могу. А также попробовать приведенный ниже код, используя ссылки на ячейки. Но это нужно запускать для большого количества файлов, и разные файлы будут иметь разные нижние строки.

Sub LastCell()

Dim MyNamedRng As Range

'Select Worksheet
Worksheets("Sheet1").Activate

'Select Last Used Cell In The Worksheet
 Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Select

'Select Cell Above Last + All To The Left
    Range(Selection, Selection.Offset(-1, 0)).Select
    Range(Selection, Selection.End(xlToLeft)).Select

'Create Named Range
    Set MyNamedRng = Sheets("Sheet1").Range("a3:gk4")
      Names.Add Name:="KeyData", RefersTo:=MyNamedRng

 End Sub

person mbarbour    schedule 25.10.2019    source источник
comment
Я не использую select, но MyNamedRange должен быть Selection   -  person Nathan_Sav    schedule 25.10.2019


Ответы (1)


В соответствующих строках будет найден последний использованный столбец.

Sub LastCell()

Dim r1 As Range, r2 As Range

Worksheets("Sheet1").Activate

Set r1 = Cells.Find(What:="*", After:=[A1],SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not r1 Is Nothing Then
    If r1.Row > 1 Then
        Set r2 = r1.offset(-1).resize(2).Entirerow.Find(What:="*", After:=Cells(r1.Row, 1), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
        'Use line below if last used column is not in the named range
        'Set r2 = Cells.Find(What:="*", After:=Cells(r1.Row, 1), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
        Range(Cells(r1.Row - 1, "A"), Cells(r1.Row, r2.Column)).Name = "KeyData"
    End If
End If

End Sub

Прочтите это, чтобы узнать об опасностях использования Select.

person SJR    schedule 25.10.2019
comment
Похоже, это сработало с некоторыми файлами, но некоторые ушли в KA, так как я могу включить это в код? - person mbarbour; 25.10.2019
comment
При редактировании создается именованный диапазон как A3 и A4, он не растягивается до последней использованной ячейки. - person mbarbour; 25.10.2019
comment
Последний столбец, используемый в строке, не входит в именованный диапазон? Если да, можете попробовать Set r2 = Cells.Find(What .... - person SJR; 25.10.2019