Ярлык для перехода к следующему новому контенту (Excel)

Ярлык для перехода к следующему новому контенту (Excel)

Я хотел бы узнать, есть ли сочетание клавиш для перемещения и выбора последней ячейки в строке или столбце с тем же содержимым, что и у текущей ячейки. То есть ctrl + стрелка перемещает к краю массива данных, но я хотел бы переместиться и в идеале выбрать все к краю массива с тем же отображаемым содержимым (то есть те же результаты, но не обязательно та же формула).

Например, у меня есть столбец со 100 ячейками с "1", за которым следуют 100 ячеек с "2", затем 100 ячеек с "3". Если я выделил одну из ячеек с "2", сочетание клавиш выделит последнюю ячейку с "2", прямо перед "3".

Было бы здорово, если бы ответ касался различий между отображаемым результатом ячеек и содержимым ячеек (т.е. ячейки столбца, отображающие «2», на самом деле содержат ячейки, содержащие «=1+1» и «=3-1»).

решение1

В Excel такой функции нет, но вы можете ее создать.

Сочетания клавиш Excel 2010,Сочетания клавиш Excel 2013,Сочетания клавиш Excel Online

Чтобы имитировать любое сочетание клавиш, вы можете использовать VBA, используяПриложение.OnKeyМетод назначения комбинации клавиш макросу. Идея заключается в следующем: В событии Workbook_Open назначьте макросам команды клавиатуры. В событии Workbook_BeforeClose назначьте те же команды на ничто (сброс к значениям по умолчанию). В модуле напишите подпрограммы, которые вы хотите запустить для этих команд клавиатуры.

Теперь, всякий раз, когда вы открываете книгу, выбранные вами команды клавиатуры будут запускать макросы, которые будут делать все, что вы захотите. Это хорошо для гораздо большего, чем просто перемещение по листу. В моем примере я назначил клавиши CTRL+D и CTRL+U для Вниз и Вверх, но вы можете выбрать то, что имеет для вас наибольший смысл. Если вы хотите, чтобы эти команды клавиатуры работали для каждого файла, предпосылка та же самая, за исключением того, что вы сохраняете их в своей личной книге макросов.

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

В объекте «ThisWorkbook»:

Private Sub Workbook_Open()
    Application.OnKey "^d", "findLastOfThis"
    Application.OnKey "^u", "findFirstOfThis"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "^d"
    Application.OnKey "^u"
End Sub

В модуле:

Option Explicit
Private Sub findLastOfThis()
    Dim val As Variant
    Dim r As Long, c As Long
    val = ActiveCell.Value
    c = ActiveCell.Column
    For r = ActiveCell.Row To ActiveSheet.UsedRange.Rows.Count
        If Cells(r, c).Value <> val Then Exit For
    Next
    r = r - 1
    Cells(r, c).Activate
End Sub

Private Sub findFirstOfThis()
    Dim val As Variant
    Dim r As Long, c As Long
    val = ActiveCell.Value
    c = ActiveCell.Column
    For r = ActiveCell.Row To 1 Step -1
        If Cells(r, c).Value <> val Then Exit For
    Next
    r = r + 1
    Cells(r, c).Activate
End Sub

Связанный контент