シナリオは、ワークシート上に自動的に代入される値のセットであり、数式のさまざまな結果を切り替えて表示することができる機能です。 DioDocs for Excelでは、IWorksheet インタフェースの Scenarios プロパティを使用することで、異なるシナリオを作成し、ワークブックに保存することができます。
DioDocs for Excelでは、シナリオを追加・実行するために以下のメソッドを用意しています。
メモ: DioDocs for Excelは、以下のプロパティも提供します。
これらのプロパティは、Microsoft Excelではワークシートが保護されているときに動作しますが、DioDocs for Excelでは何の制限もなく動作します。IWorksheet インターフェイスの Protection プロパティとこれら2つのプロパティの値によって、動作をカスタマイズすることができます。
ワークシートに新しいシナリオを追加する方法については、次のサンプルコードを参照してください。
C# |
コードのコピー
|
---|---|
// 新しいワークブックを生成します var workbook = new Workbook(); // Excelファイルを開きます workbook.Open("What-If-Analysis-Scenarios.xlsx"); // アクティブなワークシートを取得します var worksheet = workbook.ActiveSheet; // さまざまな割引率を示すシナリオを作成し、追加します // シナリオ:割引率小 // 変更対象セル: D2:D6. var lessDiscountRatesValues = new List<object> { 0.05, 0.02, 0.03, 0.02, 0.05 }; var lessDiscountRates = worksheet.Scenarios.Add("Less Discount Rates", worksheet.Range["D2:D6"], lessDiscountRatesValues); // シナリオ:割引率通常 // 変更対象セル: D2:D6. var normalDiscountRatesValues = new List<object> { 0.1, 0.05, 0.05, 0.05, 0.1 }; var normalDiscountRates = worksheet.Scenarios.Add("Normal Discount Rates", worksheet.Range["D2:D6"], normalDiscountRatesValues); // シナリオ:割引率なし // 変更対象セル: D2:D6. var sellingWithoutDiscountValues = new List<object> { 0, 0, 0, 0, 0 }; var sellingWithoutDiscount = worksheet.Scenarios.Add("Selling Without Discount", worksheet.Range["D2:D6"], sellingWithoutDiscountValues); // シナリオ:大量販売 // 変更対象セル: E2:E6. var bulkQuantitySoldValues = new List<object> { 1000, 1000, 1000, 1000, 1000 }; var bulkQuantitySold = worksheet.Scenarios.Add("Bulk Quantity Sold", worksheet.Range["E2:E6"], bulkQuantitySoldValues); // ワークブックを保存します workbook.Save("CreateScenarios.xlsx"); |
特定のシナリオの値セットを変更する方法については、次のサンプルコードを参照してください。このコードでは、"Less Discount Rates"シナリオの値セットを変更しています。
C# |
コードのコピー
|
---|---|
// シナリオ:"割引率小(Less Discount Rates)"のD3セルの値を変更します。 lessDiscountRatesValues[1] = 0.04; lessDiscountRates.ChangeScenario(worksheet.Range["D2:D6"], lessDiscountRatesValues); |
シナリオ上の"D3" の設定値が、以下のように"0.02"から"0.04"に更新されます。
Before Modification | After Modification |
---|---|
![]() |
![]() |
特定のシナリオを適用する方法については、次のサンプルコードを参照してください。このコードでは、"Less Discount Rates"シナリオを適用しています。
C# |
コードのコピー
|
---|---|
// "割引率小(Less Discount Rates)"のシナリオを実行します worksheet.Scenarios["Less Discount Rates"].Show(); |
以下のサンプルコードでは、"Normal Discount Rates"シナリオを適用しています。
C# |
コードのコピー
|
---|---|
// "割引率通常(Normal Discount Rates)"のシナリオを実行します worksheet.Scenarios["Normal Discount Rates"].Show(); |
シナリオを削除する方法については、次のサンプルコードを参照してください。このコードでは、"Less Discount Rates"シナリオを削除しています。
C# |
コードのコピー
|
---|---|
// "割引率小(Less Discount Rates)"のシナリオを削除します worksheet.Scenarios["Less Discount Rates"].Delete(); |
シナリオを非表示にする方法については、次のサンプルコードを参照してください。このコードでは、"Less Discount Rates"シナリオを非表示にしています。
C# |
コードのコピー
|
---|---|
// "割引率小(Less Discount Rates)"のシナリオを、ワークシートが保護されている時、非表示になるように作成します var lessDiscountRatesValues = new List<object> { 0.05, 0.02, 0.03, 0.02, 0.05 }; var lessDiscountRates = worksheet.Scenarios.Add("Less Discount Rates", worksheet.Range["D2:D6"], lessDiscountRatesValues, hidden:true); // または // 既存のシナリオ"割引率小(Less Discount Rates)"を、ワークシートが保護されている時、非表示にします worksheet.Scenarios["Less Discount Rates"].Hidden =true; |
シナリオを保護する方法については、次のサンプルコードを参照してください。このコードでは、"Less Discount Rates"シナリオを保護しています。
C# |
コードのコピー
|
---|---|
// "割引率小(Less Discount Rates)"のシナリオを保護された状態で作成します var lessDiscountRatesValues = new List<object> { 0.05, 0.02, 0.03, 0.02, 0.05 }; var lessDiscountRates = worksheet.Scenarios.Add("Less Discount Rates", worksheet.Range["D2:D6"], lessDiscountRatesValues, locked: true); // または // 既存のシナリオ"割引率小(Less Discount Rates)"を保護します worksheet.Scenarios["Less Discount Rates"].Locked = true; |
シナリオにコメントを追加する方法については、次のサンプルコードを参照してください。このコードでは、"Less Discount Rates"シナリオにコメントを追加しています。
C# |
コードのコピー
|
---|---|
// コメントが追加された状態で "割引率小(Less Discount Rates)"のシナリオを作成します var lessDiscountRatesValues = new List<object> { 0.05, 0.02, 0.03, 0.02, 0.05 }; var lessDiscountRates = worksheet.Scenarios.Add("Less Discount Rates", worksheet.Range["D2:D6"], lessDiscountRatesValues, "DioDocs for Excelで生成したシナリオです"); |
制限事項
DioDocs for Excelのシナリオ機能は、以下の機能をサポートしていません。