【動画解説】シート コピー・削除・移動のショートカットと便利マクロ
エクセルで、1つのブックに大量のシートを入れている場合。
単純なマウス操作しただけでは、ワークシートの切り替え・コピー・移動などの操作に時間がかかってしまいます。
特に、Excel2007になってから操作性がかなり悪くなったように思います。
そこで、この記事では、ショートカットキーやマクロを駆使して、ワークシート関連の操作をすばやく行う方法を解説していきます。
この記事の目次
ワークシートの操作関連のショートカットキー
左右のワークシートに移動するショートカットキー
ワークシート間の移動は、
- 右のワークシートに移動
-
Ctrl+PageDownを押します。
- 左のワークシートに移動
-
Ctrl+PageUpを押します。
で行います。
最初・最後のワークシートに移動するショートカットキー
残念ながら、ショートカットキーはありませんので、マウスで操作をするしかありません。
なお、マウスで操作をする場合、最近のエクセルでは一番最初・一番最後のシートを選択するボタンが消えてしまっているのでびっくりした方もいるかもしれませんが。
Ctrlを押しながら、シート選択部の三角マークを押すことで、先頭または最後のシートに移動できます。
- 最後のワークシートに移動
-
Ctrlを押しながら、右向きの三角を左クリックします。
- 先頭のワークシートに移動
-
Ctrlを押しながら、左向きの三角を左クリックします。
複数のワークシートを選択するショートカットキー
次の操作で、隣り合った複数のワークシートを同時に選択できます。
- 右のワークシートも合わせて選択
-
Ctrl+Shift+PageDownを押します。
- 左のワークシートも合わせて選択
-
Ctrl+Shift+PageUpを押します。
ワークシートを追加するショートカットキー
Shift+F11で、ワークシートを追加できます。
ワークシートを削除するショートカットキー
次のどちらかの操作で、ワークシートを削除できます。
なお、Altキーを使うショートカットの場合には、複数のキーを同時に押すのではなく1つ1つのキーを「順番」に押していく必要がありますので、ご注意ください。
- 操作方法 その1:昔のメニューを操作する代わりのキー操作
-
Alt、E、Lを順番に押します
- 操作方法 その2:リボンを操作する代わりのキー操作
-
Alt、H、D、Sを順番に押します
操作速度を追求するのであれば、「その1」のほうがキーボードを打つ回数が少なくて済むのでおすすめです。
一方で、「その2」のほうは、1つ1つのキーを押すごとにリボンを選択していく様子が見えるので意味がわかりやすいです。
わかりやすさを重視するのであれば「その2」を使ってください。
ワークシートをコピー・移動するショートカットキー
Alt、H、O、Mを順番に押します。
ワークシートコピー・移動のダイアログが開きますので、挿入先などを指定してください。
なお、この操作に関しては、ショートカットキーを使うよりもマウスで操作をしたほうが簡単かもしれません。
マウスで操作する場合、シート名のタブにマウスカーソルを合わせて、次の操作をすることで移動・コピーができます。
- マウスでシートを移動させる場合
-
ドラッグアンドドロップ
- マウスでシートをコピーする場合
-
Ctrl+ドラッグアンドドロップ
特に、元のシートの場所の近くにコピーをする場合には、マウスを使ったほうが非常に簡単ですので、お試しください。
ワークシートの名前を変更するショートカットキー
Alt、H、O、Rを順番に押します。
シート名を入力する状態になりますので、変更したいシート名を入力してください。
シートの順番を並び替えるVBAマクロ
シートが大量にあるとき、シートの順番を手作業で並び替えるのは大変です。
そこで、いくつかの場合に使えるVBAマクロを作ってみました。
シートの順番を逆順にする
今あるシートの並び順を逆にするVBAマクロです。
実行すると、シートが逆順に並べ変わります。
Sub シート逆順()
WSCount = Sheets.count
ReDim WSsName(1 To WSCount, 1 To 1)
For c = 1 To WSCount
WSsName(c, 1) = Sheets(WSCount - c + 1).Name
Next
For c = 1 To WSCount
Sheets(WSsName(c, 1)).Move before:=Sheets(c)
Next
End Sub
シートの順番を「シート名の昇順」で並び替える
シートを、シート名の昇順で並び替えるVBAマクロです。
実行すると、シートが「シート名の昇順」で並び変わります。
Sub シート昇順に並び替え()
WSCount = Sheets.count
ReDim WSsName(1 To WSCount, 1 To 1)
For c = 1 To WSCount
WSsName(c, 1) = Sheets(c).Name
Next
Sheets.Add
Set TSheet = ActiveSheet
With TSheet
Set TRange = .Range(.Cells(1, 1), .Cells(WSCount, 1))
TRange.Value = WSsName
TRange.Sort Key1:=TRange, Order1:=xlAscending
WSsName = TRange.Value
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
For c = 1 To WSCount
Sheets(WSsName(c, 1)).Move before:=Sheets(c)
Next
End Sub
シートを任意の順番で並び替える
まず、最初にマクロ「任意の順番に並び替え1」を実行すると、「並び替え」というシートに、現在のシート名の一覧が出力されます。
そこで、シート名を自分が並べ替えたい順番に、手動で並べ替えてください。
その後、マクロ「任意の順番に並び替え2」を実行すると、その順番でシートが並べ変わります。
※「並べ替え」シートは、自動で削除されます
Const TSheetName As String = "並び替え"
Sub 任意の順番に並び替え1()
WSCount = Sheets.count
ReDim WSsName(1 To WSCount, 1 To 1)
For c = 1 To WSCount
WSsName(c, 1) = Sheets(c).Name
Next
Sheets.Add before:=Sheets(1)
Set TSheet = ActiveSheet
With TSheet
Set TRange = .Range(.Cells(1, 1), .Cells(WSCount, 1))
TRange.Value = WSsName
.Name = TSheetName
End With
End Sub
Sub 任意の順番に並び替え2()
'並び替えシートがあるので、全体のシート数から1引く
WSCount = Sheets.count - 1
ReDim WSsName(1 To WSCount, 1 To 1)
Set TSheet = Sheets(TSheetName)
With TSheet
Set TRange = .Range(.Cells(1, 1), .Cells(WSCount, 1))
WSsName = TRange.Value
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
For c = 1 To WSCount
Sheets(WSsName(c, 1)).Move before:=Sheets(c)
Next
End Sub