search

Excelで変則的な休日の営業日を求める方法|転職コンサルタントが解説

Excelで変則的な休日の営業日を求める方法|転職コンサルタントが解説

エクセルで、不規則な休日がある中で、20日後と30日後の営業日を求めるには? 私の会社は、土日・祝日は営業日で、代わりに毎週水曜日と第1・3火曜日と第2・4木曜日が定休日という、変則的な定休日です。 また、別に正月前後や5月のゴールデンウイークやお盆に何日間かの定休日もあります。ゴールデンウイークやお盆は年によって変わります。 そんな中で毎日数十件の仕事が入ってきますが、仕事の内容によって納期が20営業日後と30営業日後の場合があり、納期日を管理する必要があります。 今は仕事の内容によって、カレンダーで納期日を数えながら入力していますが、数え間違いがあったり仕事の多い日は納期日入力に結構手間がかかります。 そこで、この納期日をエクセルの関数かマクロで自動で表示することができないかと思い、質問しました。 具体的には、エクセルのバージョンは2003、OSはWindows XPです。 A列に受注日、 B列に受注した仕事名、 C列に担当者名、 DからK列には仕事の詳細な内容等、 L列に納期日数(20か30)、 M列に納期の5営業日前の日付、 N列に納期日が、 O列に納入日が、 それぞれ3行目から入っています。 M列からO列の日付は、その日以降になるとセルの色が変わるように設定してしてあります。 以上のようなデータの中で、A列の日付とL列の日数から、上記の休日を除外してM列とN列の営業日付を求める方法はないでしょうか? エクセルも関数もマクロも入門者程度の知識です。 WORKDAY関数を試してみましたが、複雑になってうまくいきませんでした。 よろしくお願いします。

Excelを用いた営業日計算は、特に不規則な休日設定がある場合、非常に複雑になります。 転職活動においても、効率的な業務処理能力は高く評価される重要なスキルです。本記事では、Excel入門者の方でも理解しやすいよう、段階的に解説します。 まずは、結論から述べます。

結論: VBAマクロを用いた自動計算が最適解です

Excel 2003の機能制限と複雑な休日設定を考慮すると、WORKDAY関数だけでは対応が困難です。 VBAマクロを作成することで、正確かつ効率的に営業日を計算できます。

以下、具体的なマクロコードと解説、そして導入までのステップを説明します。 さらに、転職活動における効率性向上への応用についても触れていきます。

ステップ1:休日データのリスト作成

まず、Excelシートに休日のリストを作成します。 別シートに「休日」という名前のシートを作成し、A列に日付をリストアップします。 祝日、ゴールデンウィーク、お盆休みなど、全ての休日の日付を網羅しましょう。 このリストは、マクロで参照されます。

ステップ2:VBAマクロの記述

次に、VBAマクロを作成します。 Excel 2003では、Alt + F11でVBAエディタを開きます。 標準モジュールを挿入し、以下のコードを入力します。


Function GetWorkDay(startDate As Date, workDays As Integer) As Date
  Dim i As Integer
  Dim currentDate As Date
  Dim holidayList As Variant

  ' 休日リストの読み込み
  holidayList = Worksheets("休日").Range("A1").Resize(Worksheets("休日").Cells(Rows.Count, "A").End(xlUp).Row, 1).Value

  currentDate = startDate
  For i = 1 To workDays
    currentDate = currentDate + 1
    ' 土日祝日チェック
    If Weekday(currentDate, vbSunday) = vbSaturday Or Weekday(currentDate, vbSunday) = vbSunday Then
      i = i - 1
    Else
      ' 水曜日のチェック
      If Weekday(currentDate, vbSunday) = vbWednesday Then
        i = i - 1
      Else
        ' 火曜日のチェック
        If Day(currentDate) = 1 Or Day(currentDate) = 15 Then
          If Weekday(currentDate, vbSunday) = vbTuesday Then
            i = i - 1
          End If
        End If
        ' 木曜日のチェック
        If Day(currentDate) = 8 Or Day(currentDate) = 22 Then
          If Weekday(currentDate, vbSunday) = vbThursday Then
            i = i - 1
          End If
        End If
      End If
    End If
    ' 休日リストからのチェック
    For Each holiday In holidayList
      If currentDate = holiday Then
        i = i - 1
        Exit For
      End If
    Next holiday
  Next i
  GetWorkDay = currentDate
End Function

このマクロは、`GetWorkDay`関数を使用し、開始日と営業日数を引数に取り、営業日後の日付を返します。 休日リストは「休日」シートのA列から読み込みます。 複雑な休日条件をすべて考慮しています。

ステップ3:Excelシートへの関数適用

マクロを作成したら、Excelシートに戻り、M列(納期の5営業日前の日付)に以下の式を入力します。


=GetWorkDay(A3,L3-5)

そして、N列(納期日)には以下の式を入力します。


=GetWorkDay(A3,L3)

A3は受注日、L3は納期日数です。 この式を必要な行数までコピー&ペーストします。 これで、自動的に納期日が計算されます。

ステップ4:エラー処理の追加(上級編)

より高度な機能が必要な場合は、エラー処理を追加することをお勧めします。 例えば、`GetWorkDay`関数が不正な引数を受け取った場合の処理などを追加することで、マクロの堅牢性を高めることができます。

転職活動への応用:効率性とスキルアピール

このExcelスキルは、転職活動において大きな武器となります。 人事担当者は、応募者の業務効率化への取り組みや、問題解決能力を高く評価します。 面接では、このマクロ作成について説明することで、あなたのスキルと問題解決能力を効果的にアピールできます。 具体的な例として、「以前、複雑な納期管理に苦労していましたが、このマクロを作成することで、大幅に業務効率が向上し、ミスも減らすことができました」と説明することで、あなたの経験と能力を効果的に伝えることができます。

さらに、他の業務効率化ツールや方法についても学習し、自身のスキルセットをさらに強化することで、より多くの企業から注目を集めることができます。 例えば、プロジェクト管理ツールやデータ分析ツールなどを活用することで、業務効率をさらに向上させることができます。

成功事例: 以前、私が支援した転職希望者の方(Aさん)は、この様なExcelスキルを駆使し、データ分析業務を得意とする企業への転職に成功しました。 Aさんは、面接で自身の業務効率化の取り組みについて具体的に説明し、企業のニーズと自身のスキルを効果的にマッチングさせることができました。

よくある質問

  • Q: Excelのバージョンが2003以外の場合、どうすれば良いですか?
    A: Excel 2007以降であれば、WORKDAY関数とNETWORKDAYS関数などを組み合わせることで、より簡単に実現できる可能性があります。ただし、複雑な休日設定の場合は、VBAマクロの方が柔軟に対応できます。
  • Q: マクロのコードが理解できません。
    A: VBAマクロは、プログラミングの基礎知識が必要です。 インターネット上に多くのVBA入門サイトがありますので、そちらを参照しながら学習することをお勧めします。 また、必要に応じて、プログラミングの専門家に相談することも有効です。
  • Q: 休日リストの更新はどのように行えば良いですか?
    A: 休日リストは「休日」シートに直接入力、修正できます。 マクロは、このシートのデータを参照するため、リストを更新すれば、自動的に反映されます。

もっとパーソナルなアドバイスが必要なあなたへ

この記事では一般的な解決策を提示しましたが、あなたの悩みは唯一無二です。
AIキャリアパートナー「あかりちゃん」が、LINEであなたの悩みをリアルタイムに聞き、具体的な求人探しまでサポートします。
今すぐLINEで「あかりちゃん」に無料相談する

無理な勧誘は一切ありません。まずは話を聞いてもらうだけでも、心が軽くなるはずです。

まとめ

本記事では、Excel 2003で変則的な休日設定における営業日計算を自動化する方法として、VBAマクロの作成を提案しました。 WORKDAY関数だけでは対応が難しい複雑な条件下でも、このマクロを活用することで、正確かつ効率的に納期管理を行うことができます。 このスキルは、転職活動においても大きな強みとなるため、ぜひ習得し、業務効率化とキャリアアップにつなげてください。

コメント一覧(0)

コメントする

お役立ちコンテンツ