DioDocs for Excel
DioDocs for Excel
クロスワークブック数式
機能 > 数式 > クロスワークブック数式

クロスワークブック数式を使用すると、外部ワークブックのデータを参照して計算を行うことができます。例えば、異なる科目の5つのワークブックがある場合は、クロスワークブック数式を使用して、ワークシートに5つの科目のすべてのマークを合計できます。

DioDocs for Excelでは、外部ワークブックのフォルダーやWebパスを使用することで、クロスワークブック数式を使用できます。GetExcelLinkSourcesプロパティを使用して、リンクされたExcelワークブックの名前を取得し、UpdateExcelLinksメソッドを使用して、Excelのリンクのキャッシュを更新できます。

次のコードは、 外部ワークブックのフォルダーのパスを使用してクロスワークブック数式を作成し、Excelのリンクを更新する方法を示します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();

workbook.Worksheets[0].Range["B1"].Formula = @"='D:\[A.xlsx]Sheet1'!A1";
//外部ワークブックのインスタンスとして新しいワークブックを作成します
var workbook2 = new GrapeCity.Documents.Excel.Workbook();
workbook2.Worksheets[0].Range["A1"].Value = "Hello, World!";
workbook2.Worksheets[0].Range["A2"].Value = "Hello";
//外部ワークブックのデータのキャッシュを更新します
foreach (var item in workbook.GetExcelLinkSources())
{
    workbook.UpdateExcelLink(item, workbook2);
}

//Excelファイルに保存します
workbook.Save("crossworkbookformula.xlsx");

次のコードは、外部ワークブックのWebパスを使用してクロスワークブック数式を作成し、Excelのリンクを更新する方法を示します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new GrapeCity.Documents.Excel.Workbook();
workbook.Worksheets[0].Range["B1"].Formula = "= 'http://wwww.grapecity.com/gcexcel/[SourceWorkbook.xlsx]Sheet1'!A1";
//外部ワークブックのインスタンスとして新しいワークブックを作成します
var workbook2 = new GrapeCity.Documents.Excel.Workbook();
workbook2.Worksheets[0].Range["A1"].Value = 100;
//外部ワークブックのデータのキャッシュを更新します
foreach (var item in workbook.GetExcelLinkSources())
{
    workbook.UpdateExcelLink(item, workbook2);
}
//Excelファイルに保存します
workbook.Save("crossworkbookformulawebpath.xlsx");

次のコードは、テーブルを持つ外部ワークブックのパスを使用してクロスワークブック数式を作成し、Excelのリンクを更新する方法を示します。

C#
コードのコピー
// 新しいワークブックを作成します
var workbook = new Workbook();

// A1セルにデータを追加します
workbook.Worksheets[0].Range["A1"].Value = "Total Sales";

// Set the table formula across workbook.
workbook.Worksheets[0].Range["B1"].Formula = "=SUM('[SalesTable.xlsx]'!Table1[Sales])";
workbook.Worksheets[0].Range["B1"].NumberFormat = "$#,##0.00";
workbook.Worksheets[0].Range["A:B"].ColumnWidth = 12;

// 追加のワークブックを初期化します
var workbook2 = new Workbook();
            
// 範囲にデータを追加します
workbook2.ActiveSheet.Range["A1:C6"].Value = new object[,]
{
{ "Product", "Type", "Sales" },
{ "Apple", "Fruit", 25000},
{ "Grape", "Fruit", 30000 },
{ "Carrot", "Vegetable", 28000 },
{ "Strawberry", "Fruit", 50000 },
{ "Onion", "Vegetable", 23000 }

};

// workbook2にテーブルを作成します
workbook2.ActiveSheet.Tables.Add(workbook2.ActiveSheet.Range["A1:C6"], true);
workbook2.ActiveSheet.Range["C2:C6"].NumberFormat = "$#,##0.00";
workbook2.ActiveSheet.Range["A:C"].ColumnWidthInPixel = 100;

// 外部ワークブックデータのキャッシュを更新します
foreach (var item in workbook.GetExcelLinkSources())
{
    workbook.UpdateExcelLink(item, workbook2);
}

// 両方のExcelファイルを保存します
workbook.Save("CrossWorkbookTableFormula.xlsx");
workbook2.Save("SalesTable.xlsx");
メモ: 再計算して正しい結果を表示するために、クロスワークブック数式が使用されているワークブックを開くと同時に、外部リンクのワークブックも開く必要があります。