Excelの連続データの長いショートカットキーを短く簡単にしてみた

Japanese

はじめに

Excelには連続データを入力する方法があります。
有名な機能の一つなためExcelを使用している人の大半が知っていると思います。

連続データを多用する機会があり、ショートカットキーないかなと検索してみたところ、

「Alt → H → F → I → S」または「Alt → E → I → S」

のような順に押すのが怠い方法しかなかったため、自分で簡単に作ってみました。

コード作成

まず作成するにあたりマクロ有効ファイルに変更し、開発タブを開かなくてはなりません。
以下に紹介しているので方法を知らない方は参考にしてみてください。

標準モジュールを生成し、以下のコードをコピペしてください。

Sub 連続データ生成()
	If TypeName(Selection) = "Range" _
		And Selection.Areas.Count = 1 _
		And Not Selection.MergeCells Then
		
		Dim rng As Range
		Set rng = Selection
		
		If rng.Rows.Count >= rng.Columns.Count Then
			' 縦方向に系列(列方向に展開)
			rng.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
		Else
			' 横方向に系列(行方向に展開)
			rng.DataSeries Rowcol:=xlRows, Type:=xlLinear, Step:=1
		End If 
	Else 
		MsgBox "セル範囲を1つだけ選択してください(結合セル不可)。",vbExclamation
	End If
End Sub

以下のような感じなっていればOKです。(Ctrl+C 保存忘れずに。)

実行ショートカットキー設定

では次に先ほど作成したプログラムを実行するショートカットキーを設定していきます。

今回は「Shift+Z」を選択しました。

※Ctrl+Cなどの既存のショートカットキー被ると機能が上書きされるため、完全になにも設定のないものを設定するか使用しないショートカットキーを設定してください。

実行

では早速実行していきましょう。
連続データを生成したい箇所にスタートの数字を入力し範囲選択しCtrl+Shift+Zを実行。

するとこのようにプログラムが実行され連続データが生成されました。
これで超簡単ショートカットキーで連続データを生成することができるので多用する際は効率が上がるかと思います。

ちなみに先頭が「1」で始まっていますが、「2」でも「10」でも問題ありません。

横でも実行可能です。

汎用性を拡大

先のプログラムを作成したはいいものの、固定で1しか値は増加していきません。
プログラムを変更して2でも3でも増加させることは可能ですが、ちょっと違う方法で便利にさせていきたいと思います。

ということでプログラムを改造

Sub 連続データ生成2()

Dim rng As Range
Dim stepVal As Variant

    If TypeName(Selection) = "Range" _
       And Selection.Areas.Count = 1 _
       And Not Selection.MergeCells Then
        
        Set rng = Selection

        ' 増分を入力してもらう
        stepVal = InputBox("増加する値を入力してください(例: 1)", "系列の増分", 1)
        
        ' キャンセルなら終了
        If stepVal = "" Then Exit Sub
        
        ' 数値でなければエラー
        If Not IsNumeric(stepVal) Then
            MsgBox "数値を入力してください。", vbExclamation
            Exit Sub
        End If

        ' 縦長か横長かで方向を判定
        If rng.Rows.Count >= rng.Columns.Count Then
            ' 縦方向に系列
            rng.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=CDbl(stepVal)
        Else
            ' 横方向に系列
            rng.DataSeries Rowcol:=xlRows, Type:=xlLinear, Step:=CDbl(stepVal)
        End If
    Else
        MsgBox "セル範囲を1つだけ選択してください(結合セル不可)。", vbExclamation
    End If
End Sub

はい、基本的な使い方は先ほどと変わりませんが1点追加機能があります。

実行すると以下の入力項目が出現し自身で増加値を設定できます。

ここで分かりやすく「10」を入力し実行します。

するとこのように「10」ずつ増加するようになっています。


横でももちろん実行可能で簡単に増加値を決められます。

最後に

短い連続データだと全然マウス操作で十分ですが、長い列や行で生成することになると面倒ですのでこの方法はかなり有効だと思います。

しかし基本的に不便だなと感じてもそのままマウスで生成する人がほとんどだと思いますので個人的な備忘録としてこの記事を残します笑

タイトルとURLをコピーしました