移动到下一个新内容的快捷方式 (Excel)

移动到下一个新内容的快捷方式 (Excel)

我想知道是否有快捷方式可以移动到并选择与当前单元格内容相同的行或列中的最后一个单元格。即 ctrl + 箭头移动到数据数组的边缘,但我想移动到显示内容相同的数组的边缘(即相同的结果,但不一定是相同的公式),最好选择全部。

例如,我有一列,其中 100 个单元格包含“1”,后面是 100 个单元格包含“2”,然后是 100 个单元格包含“3”。如果我选​​择了其中一个包含“2”的单元格,快捷方式将选择最后一个包含“2”的单元格,就在“3”之前。

如果答案可以处理单元格显示结果与单元格内容之间的差异(即,显示“2”的列的单元格实际上有显示“=1+1”和“=3-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

相关内容