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に今日の日付、A8から下に開始日、B8から下に終了日が入力されていると、「ガントチャートを作成」ボタンをクリックしたとき、その期間に対応するセル範囲に赤い矢印が作成されます。開始日が空欄の場合矢印は作成されず、終了日が空欄の場合は今日の日付までを期間として矢印が作成されます。

Excel

なお、C6から右のセルは「yyyy/mm/dd」のようなデータをユーザー定義で日付だけ表示されるようにしています。数値を入力しただけでは日付と認識されずエラーになるのでご注意ください。

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

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

Weight(線の太さ)

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

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

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

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

まとめ

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

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

ご紹介したマクロで希望の動作にならない場合、マクロの作成を依頼できるサービスを利用するのがおすすめです。以下の記事でマクロの作成を依頼できるサービスをご紹介していますので、興味のある方はぜひあわせてご覧ください。

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