Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
生徒
「Office ScriptsでExcelの期限管理を自動化したいです。日付によってセルの色を自動で変えられますか?」
先生
「できますよ。Office Scriptsを使えば、今日より前の日付を赤、近い期限を黄色など、条件付き書式をコードで自動設定できます。」
生徒
「難しそうですが、パソコン初心者でもできますか?」
先生
「順番に理解すれば大丈夫です。日付判定のロジックをやさしく解説しますね。」
1. Office Scriptsとは?
Office Scriptsとは、Excel Onlineで使えるExcel自動化機能です。ブラウザ版Excelの自動化タブから実行でき、クリック操作をコードに置き換えて自動処理できます。プログラミング未経験者でも、いつものExcel作業を文章のように書くだけで自動化できます。
今回のテーマは「日付判定で自動色分けするロジック」です。これは、締切管理、タスク管理表、プロジェクト管理、請求書管理などで非常に便利です。人が目で確認しなくても、期限切れを赤色で表示するなど、自動で注意喚起できます。
2. 条件付き書式とは?
条件付き書式とは、特定の条件を満たしたときにセルの色や文字色を変える機能です。例えば「今日より前の日付なら赤くする」という設定ができます。
日付判定とは、セルに入っている日付と今日の日付を比べることです。今日の日付は「現在日時」と呼ばれます。プログラムではDateという機能を使って取得します。
たとえば、牛乳の賞味期限をイメージしてください。今日より前なら危険、今日から三日以内なら注意、それ以外は安心、という考え方です。これをExcelで自動判定するのが今回のロジックです。
3. 今日より前の日付を赤色にする方法
まずは基本からです。今日より前の日付を赤色にするOffice Scriptsコードを書いてみましょう。これは期限切れ判定の基本です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A2:A10");
const conditionalFormat = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.cellValue
);
conditionalFormat.getCellValue().setRule({
formula1: "=TODAY()",
operator: ExcelScript.ConditionalCellValueOperator.lessThan
});
conditionalFormat.getFormat().getFill().setColor("red");
}
このコードでは、TODAYというExcel関数を使っています。TODAYは「今日の日付」を返す関数です。lessThanは「より小さい」という意味で、今日より前かどうかを判定しています。
4. 今日から三日以内を黄色にするロジック
次に、期限が近いものを黄色にする方法です。今日から三日以内という条件を作ります。これは締切直前のタスク管理に便利です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A2:A10");
const conditionalFormat = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.custom
);
conditionalFormat.getCustom().setFormulaLocal(
"=AND(A2>=TODAY(),A2<=TODAY()+3)"
);
conditionalFormat.getFormat().getFill().setColor("yellow");
}
ANDは「両方の条件を満たす」という意味です。今日以上、かつ三日以内という条件を作っています。これが日付判定ロジックの基本的な考え方です。
5. 未来の日付を緑色にする設定
今度は余裕のある期限を緑色にします。これは安心ゾーンです。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A2:A10");
const conditionalFormat = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.cellValue
);
conditionalFormat.getCellValue().setRule({
formula1: "=TODAY()+3",
operator: ExcelScript.ConditionalCellValueOperator.greaterThan
});
conditionalFormat.getFormat().getFill().setColor("green");
}
greaterThanは「より大きい」という意味です。三日後より先なら緑色になります。
6. 日付が空白の場合を除外する方法
実務では、空白セルがあることも多いです。空白を色付けしないための工夫も重要です。これもExcel自動化では大切なポイントです。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A2:A10");
const conditionalFormat = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.custom
);
conditionalFormat.getCustom().setFormulaLocal(
"=AND(A2<>\"\",A2<TODAY())"
);
conditionalFormat.getFormat().getFill().setColor("red");
}
空白でないという条件を追加することで、正しい日付判定ができます。これが実践的なOffice Scripts条件付き書式自動化テクニックです。
7. 日付判定ロジックの考え方まとめ
日付判定ロジックの基本は「比較」です。今日より前か、今日と同じか、未来か。この三つに分けるだけで、タスク管理やスケジュール管理が大きく改善します。
Office Scriptsで条件付き書式を自動化すれば、毎回手動で設定する必要はありません。Excel自動化は業務効率化に直結します。特にプロジェクト管理、締切管理、請求管理などで効果を発揮します。
初心者の方は、まずTODAY関数と比較演算子の意味を理解しましょう。比較演算子とは「より小さい」「より大きい」といった比較の記号のことです。これが分かれば日付判定は難しくありません。
Office Scripts条件付き書式自動化は、Excel業務効率化、日付自動判定、期限管理自動化の第一歩です。少しずつ試しながら、自分の表に合わせてカスタマイズしてみましょう。
まとめ
今回は、Office Scriptsを使ったExcelの日付判定と条件付き書式の自動化について、基礎から実践まで順番に解説しました。日付判定ロジックの中心は「今日の日付との比較」です。今日より前なら期限切れ、今日から三日以内なら期限間近、それ以降は余裕ありというように、基準日を中心に分類するだけで、期限管理は格段に分かりやすくなります。
Office Scriptsを活用すれば、Excel Online上で条件付き書式をコードで自動設定できます。これにより、毎回手動で設定する手間がなくなり、ヒューマンエラーの防止にもつながります。特にタスク管理表、プロジェクト管理表、スケジュール管理表、請求書管理台帳、契約更新管理など、日付を扱う業務では大きな効果を発揮します。
日付判定の基本は、TODAY関数と比較演算子の組み合わせです。lessThanは今日より前、greaterThanは指定日より後という意味でした。さらにAND関数を使えば、複数条件を組み合わせた柔軟なロジックを作ることができます。空白除外の条件を加えることで、実務でも使える安定した自動化が実現できます。
Excel自動化は難しく感じるかもしれませんが、仕組みはとてもシンプルです。基準日を決める、比較する、色を付ける。この三段階を理解するだけで、日付自動判定は完成します。Office Scriptsによる条件付き書式自動化は、業務効率化、作業時間短縮、生産性向上に直結する重要なスキルです。
総合サンプルプログラム
最後に、期限切れを赤、三日以内を黄色、それ以外を緑にする総合サンプルを紹介します。実務でそのまま応用できる構成です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A2:A100");
// 期限切れ(赤)
let expired = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.custom
);
expired.getCustom().setFormulaLocal(
"=AND(A2<>\"\",A2<TODAY())"
);
expired.getFormat().getFill().setColor("red");
// 三日以内(黄色)
let warning = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.custom
);
warning.getCustom().setFormulaLocal(
"=AND(A2>=TODAY(),A2<=TODAY()+3)"
);
warning.getFormat().getFill().setColor("yellow");
// 余裕あり(緑)
let safe = range.addConditionalFormat(
ExcelScript.ConditionalFormatType.cellValue
);
safe.getCellValue().setRule({
formula1: "=TODAY()+3",
operator: ExcelScript.ConditionalCellValueOperator.greaterThan
});
safe.getFormat().getFill().setColor("green");
}
このように、Office Scriptsで条件付き書式を段階的に設定すれば、Excelの期限管理は自動化できます。日付比較ロジックを理解することで、応用範囲は大きく広がります。例えば七日以内に変更したり、月末基準に変更したりすることも簡単です。
生徒
今日より前かどうかを比較するだけで、期限管理がこんなに分かりやすくなるとは思いませんでした。日付判定ロジックは意外とシンプルですね。
先生
そうですね。基準日を決めて比較するという考え方が大切です。TODAY関数と比較演算子を理解すれば、Excel自動化は怖くありません。
生徒
空白除外の条件を入れることで、実務でも安心して使えると分かりました。条件付き書式の自動化は業務効率化に直結しますね。
先生
その通りです。Office Scriptsを活用すれば、毎回の手作業を減らし、ミスを防ぎ、生産性を高めることができます。まずは小さな表から自動化を試してみましょう。
生徒
はい。日付自動判定と条件付き書式を使って、タスク管理表を改良してみます。