現在のセルと同じ内容の行または列の最後のセルに移動して選択するショートカットがあるかどうか知りたいです。つまり、Ctrl + 矢印キーでデータ配列の端に移動しますが、同じ表示内容 (つまり、同じ結果ですが、必ずしも同じ数式ではありません) の配列の端に移動して、理想的にはすべてを選択したいと思います。
たとえば、列に「1」のセルが 100 個あり、その後に「2」のセルが 100 個、さらに「3」のセルが 100 個続くとします。「2」のセルの 1 つを選択した場合、ショートカットは「3」の直前の「2」の最後のセルを選択します。
回答が、セルの表示結果とセルの内容の違いに対応していれば素晴らしいと思います (つまり、「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