パソコンを買うなら今!最新セール情報まとめ

Excelでガントチャートの矢印を自動作成する方法

Excelでガントチャートの矢印を自動作成する方法

以前、Excelでガントチャートを作成したい方向けに「Excelで時間単位・分単位のガントチャートを作成する方法」という記事を書きましたが、こちらは「開始時間と終了時間を入力すると、対応するセルが塗りつぶされる」というものでした。

Excelでガントチャートを作成したい方の中には、「セルを塗りつぶすのではなく、セルに矢印を表示したい」という方もいるでしょう。

そこで今回は、Excelでガントチャートの矢印を自動作成する方法をご紹介します。

なお、今回ご紹介する方法では「マクロ」を使います。マクロの作成方法や実行方法がよく分からない方は、まず先に以下の記事をご一読ください。

日付から矢印を自動作成する方法

まずはじめに、開始日と終了日を入力するとその日付に対応するセルに矢印が作成されるマクロをご紹介します。

コード

以下のコードをコピーして標準モジュールに貼り付けてください。

Sub 日付から矢印作成()

    Dim rng1 As Range
    Dim dt As Range
    Dim rng2 As Range
    Dim r As Long
    Dim foundCell1 As Range
    Dim startCol As Long
    Dim foundCell2 As Range
    Dim endCol As Long
    Dim targetRng As Range

    Set rng1 = ActiveSheet.Range(Range("C6"), Range("C6").End(xlToRight)) ' 日付入力範囲
    Set dt = ActiveSheet.Range("B4") ' 今日の日付入力セル
    
    For Each rng2 In ActiveSheet.Range(Range("A8"), Range("A8").End(xlDown)) ' 開始日入力範囲
        r = rng2.Row ' 開始日・終了日入力セルの行番号
        Set foundCell1 = rng1.Find(rng2, , xlFormulas, xlPart) ' 開始日で検索した時の該当セル
        startCol = foundCell1.Column ' 検索該当セルの列番号
            If rng2.Offset(0, 1) = "" Then ' 終了日が空欄の場合
                Set foundCell2 = rng1.Find(dt, , xlFormulas, xlPart)  ' 今日の日付で検索した時の該当セル
                endCol = foundCell2.Column '検索該当セルの列番号
            Else ' 終了日が空欄ではない場合
                Set foundCell2 = rng1.Find(rng2.Offset(0, 1), , xlFormulas, xlPart) ' 終了日で検索した時の該当セル
                endCol = foundCell2.Column '検索該当セルの列番号
            End If
        ActiveSheet.Range(Cells(r, startCol), Cells(r, endCol)).Select
        Set targetRng = Selection ' 開始日から終了日までのセル範囲
        With ActiveSheet.Shapes.AddLine(targetRng.Left, targetRng.Top + targetRng.Height / 2, _
            targetRng.Left + targetRng.Width, targetRng.Top + targetRng.Height / 2).Line
            .ForeColor.RGB = RGB(255, 0, 0) ' 線の色
            .Weight = 3 ' 線の太さ
            .EndArrowheadStyle = 2 ' 線の終点のスタイル
        End With
    Next rng2
    
End Sub

コードを貼り付けたら、マクロ実行ボタンに「日付から矢印作成」マクロを登録しましょう。

Excel

使い方

C6から右に連続した日付、B4に今日の日付(TODAY関数を使って表示)、A8から下に開始日、B8から下に終了日が入力されていると、「ガントチャートを作成」ボタンを押したとき、その期間に対応するセル範囲に赤い矢印が作成されます。開始日が空欄の場合矢印は作成されず、終了日が空欄の場合は今日の日付までを期間として矢印が作成されます。

Excel

範囲範囲に矢印を自動作成する方法

次に、選択範囲に矢印が作成されるマクロをご紹介します。

コード

以下のコードをコピーして標準モジュールに貼り付けてください。

Sub 選択範囲に矢印作成()
    
    Dim targetRng As Range
    
    Set targetRng = Selection ' 選択範囲
    
    With ActiveSheet.Shapes.AddLine(targetRng.Left, targetRng.Top + targetRng.Height / 2, _
        targetRng.Left + targetRng.Width, targetRng.Top + targetRng.Height / 2).Line
        .ForeColor.RGB = RGB(255, 0, 0) ' 線の色
        .Weight = 3 ' 線の太さ
        .EndArrowheadStyle = 2 ' 線の終点のスタイル
    End With
    
End Sub

コードを貼り付けたら、マクロ実行ボタンに「選択範囲に矢印作成」マクロを登録しましょう。

Excel

使い方

矢印を作成したいセル範囲を選択した状態で「ガントチャート作成」ボタンを押すと、選択範囲に赤い矢印が作成されます。

Excel
注意

選択範囲が離れている場合、最初に選択した範囲にのみ矢印が作成されます。

Excel

矢印の色や太さなどは自由にカスタマイズできる!

今回ご紹介したマクロは、どちらも線を引く「AddLineメソッド」を使用しており、以下のようなプロパティを使うことで線の色を赤にしたり、線の終点を三角にして矢印のように見せたりしています。

最後にAddLineメソッドの主要プロパティとそれぞれの設定値をご紹介します。矢印の見た目をカスタマイズしたい方はぜひ参考にしてみてください。

ForeColor(線の色)

ForeColor(フォアカラー)は、線の色を指定できるプロパティです。今回ご紹介したコードではRGB関数を使ってRGB値で色を指定しています。

RGB(255, 0, 0)
黄色
RGB(255, 255, 0)
RGB(0, 255, 0)
水色
RGB(0, 255, 255)
RGB(0, 0, 255)
mono
mono

上記以外の色にしたい場合は「(色名)rgb」で検索しましょう!

Weight(線の太さ)

Weight(ウェイト)は、線の太さを指定できるプロパティです。ポイント単位(1ポイント=約0.35ミリ)で指定できます。

EndArrowheadStyle(線の終点のスタイル)

EndArrowheadStyle(エンドアローヘッドスタイル)は、線の終点のスタイルを指定できるプロパティです。

矢印なし
1
三角矢印
2
開いた矢印
3
鋭い矢印
4
ひし形
5
円形矢印
6

まとめ

今回は、Excelでガントチャートの矢印を自動作成する方法をご紹介しました。

開始日と終了日から矢印のガントチャートを作成したい方、もしくは選択範囲から矢印のガントチャートを作成したい方は、ぜひ今回ご紹介したマクロを試してみてくださいね。

進捗率が知りたい方には以下の記事もおすすめです。