ワークシートにWhat-If分析(シナリオ)を追加する

Microsoft ExcelのWhat-If分析は、ワークシートのセルの値を変更した際にその値を使用している数式の結果にどのように影響するのかを調べるための機能です。このWhat-If分析機能の一つである「シナリオ」は、異なる一連の値(たとえば「楽観的」、「現実的」、「悲観的」などの予測に基づいた値)を設定して、それぞれのシナリオに切り替えて変更した値による数式の結果を比較・分析することが可能です。

ワークシートにWhat-If分析(シナリオ)を追加する

このWhat-If分析の設定を一つ一つユーザー操作で実施するのではなく、ワークフローや業務システムなどに組み込んでExcel業務を効率化したい、そのような要件もあるのではないでしょうか。

本記事では「DioDocs for Excel(ディオドック)」を使用してワークシートにWhat-If分析(シナリオ)を追加する方法を紹介します。

What-If分析(シナリオ)を追加する

利用するデータ

ワークシートのセル範囲「A1」~「I5」に以下のようなデータを持つExcelファイル(what-if-scenario.xlsx)を準備しておきます。今回はD列の「値引き率」の値を変更するシナリオを追加します。

利用するデータ

シナリオを追加する

ワークブックにシナリオを追加するには、IScenariosインタフェースのAddメソッドを使用します。

// ワークブックを作成
Workbook workbook = new();
workbook.Open("what-if-scenario.xlsx");

// ワークシートを取得
IWorksheet worksheet = workbook.ActiveSheet;

// 値引き率が低いシナリオ
// 変更する列はD列、変更するセルの値は [0.08, 0.05, 0.05, 0.03, 0.03] 
List<object> lessDiscountRatesValues = [0.08, 0.05, 0.05, 0.03, 0.03];
IScenario lessDiscountRates = worksheet.Scenarios.Add(
    "低値引き率",
    worksheet.Range["D2:D6"],
    lessDiscountRatesValues);

Addメソッドの引数として「シナリオ名(name)」、「シナリオで変更するセル範囲(changingCells)」、「シナリオで変更するセルの値のリスト(values)」を設定しています。今回は省略していますが、その他の引数として「コメント(comment)」、「保護(locked)」、「非表示(hidden)」を設定することも可能です。

複数のシナリオを追加して切り替えるために、Addメソッドを使用してさらに2つのシナリオを追加します。

// 標準の値引き率のシナリオ
// 変更する列はD列、変更するセルの値は [0.1, 0.07, 0.07, 0.05, 0.05] 
List<object> normalDiscountRatesValues = [0.1, 0.07, 0.07, 0.05, 0.05];
IScenario normalDiscountRates = worksheet.Scenarios.Add(
    "標準値引き率",
    worksheet.Range["D2:D6"],
    normalDiscountRatesValues);

// 割引なしで販売するシナリオ
// 変更する列はD列、変更するセルの値は [0, 0, 0, 0, 0] 
List<object> sellingWithoutDiscountValues = [0, 0, 0, 0, 0];
IScenario sellingWithoutDiscount = worksheet.Scenarios.Add(
    "割引なし",
    worksheet.Range["D2:D6"],
    sellingWithoutDiscountValues);

これでワークシートには、「低値引き率」、「標準値引き率」、「割引なし」の3つのシナリオが追加された状態になります。

シナリオの表示

追加したシナリオを表示するには、IScenariosインタフェースのShowメソッドを使用します。このメソッドを実行すると、ワークシートのセルの値をシナリオで設定する値に更新してそれらのセルを参照している数式を再計算します。

今回は「割引なし販売」のシナリオを表示するように設定します。

// 割引なしで販売するシナリオを表示
worksheet.Scenarios["割引なし"].Show();

// Excelファイルに保存
workbook.Save("result-what-if-scenario.xlsx");

実行すると以下のようにD列には「割引なし」のシナリオによる値が設定された状態で表示されます。

シナリオの表示

シナリオを「低値引き率」や「標準値引き率」に表示を切り替えると、更新されたセルの値を参照している数式やグラフの結果が更新されます。

シナリオの表示
シナリオの表示

この他にもDioDocs for Excelでは、シナリオに対して変更や削除などの設定を行うことが可能です。詳細は製品ヘルプで確認いただけます。

今回紹介した機能については以下のサンプルやデモで動作を確認いただけます。

DioDocsの最新バージョン「V8J」の新機能については、以下のページで紹介していますのでこちらも是非ご覧ください。

さいごに

弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。

また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /