2

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

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

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

1 ответ1

1

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

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

Чтобы имитировать любое сочетание клавиш, вы можете использовать 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .