MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > 数式 > 数式の概要 |
セルまたはセル範囲に数式を設定できます。行または列に、数式を設定することもできます。数式は数式表現を意味する文字列であり、通常は関数、演算子、および定数を組み合わせて構成されます。
コードで数式を設定するには、対象の行を表すRow、列を表すColumn、またはセルを表すCellオブジェクトのFormulaプロパティを設定します。
行または列に数式を設定すると、既定の数式を割り当てたことになります。設定した数式は、行または列のすべてのセルに適用され、対象の行または列の先頭セルが基準の位置として使用されます。数式が相対セル参照を使用する場合、数式の評価は、セルごとに異なる結果となります。
たとえば、A列に相対セル参照を使用した数式「C1+D1」を設定した場合、A1セルには数式「C1+D1」、A2セルには「C2+D2」、A3セルには「C3+D3」と、数式は、列内のセルに、相対的にコピーされます。A列のすべてのセルで、C1とD1の合計値(他の行のC列およびD列の値は含まない)が評価されるようにするには、絶対セル参照を使用して「$C$1+$D$1」とする必要があります。セル参照を使用する数式のサンプルについては、「セル参照スタイル」を参照してください。
次のサンプルコードの最初の数式では、A1セルに5を掛けた積を求め、この結果を別のセルに表示します。
次の数式は、A1からA4セルの合計をD列に設定します。数式は、相対セル参照「A1:A4」を含みます。そのため、D列のすべてのセルに、数式が相対的にコピーされます。
C# |
コードのコピー
|
---|---|
fpSpread1.ActiveSheet.Cells[2, 0].Formula = "PRODUCT(A1,5)"; fpSpread1.ActiveSheet.Columns[3].Formula = "SUM(A1:A4)"; |
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.ActiveSheet.Cells(2, 0).Formula = "PRODUCT(A1,5)" FpSpread1.ActiveSheet.Columns(3).Formula = "SUM(A1:A4)" |
ユーザーに数式の入力を許可できます。詳細は「数式入力の許可」を参照してください。
数式が参照するセルのセル型に注意してください。また、数式に使用するデータを割り当てるとき、CellオブジェクトのTextまたはValueプロパティのどちらを使用するのかも注意が必要です。Textプロパティを使用してセルデータを割り当てると、割り当てられた文字列はセル型に基づき、必要なデータ型に解析されます。たとえば数値型セルでは、文字列は倍精度データ型として解析されます。Valueプロパティを使用すると、シートは割り当てられたオブジェクトをそのまま受け入れ、解析は行われません。文字列を割り当てた場合、文字列のまま設定されます。一部の数値関数(SUMなど)は、セル範囲内の数値以外の値を無視します。たとえば、セル範囲A1:A3に{1, "2", 3}という値が設定されている場合、数式SUM(A1:A3)の評価結果は4となります。これは、SUM関数が"2"という文字を無視するためです。数式の計算に使用されるすべてのセルには、正しい値を正しいデータ型で設定する必要があります。
数式内の文字列定数には、改行文字('\n')などの特殊文字を使用できます。数式のテキスト表現では、文字列定数を引用符で囲むことに注意してください。
次のサンプルコードは、複数行テキストを表示するセルを作成し、改行文字を含む文字列定数を表す数式を割り当てます。
C# |
コードのコピー
|
---|---|
TextCellType ct = new TextCellType(); ct.Multiline = true; fpSpread1.Sheets[0].Cells[0, 0].CellType = ct; fpSpread1.Sheets[0].Cells[0, 0].Formula = "\"line1\nline2\""; |
Visual Basic |
コードのコピー
|
---|---|
Dim ct As New TextCellType() ct.Multiline = True FpSpread1.Sheets(0).Cells(0, 0).CellType = ct FpSpread1.Sheets(0).Cells(0, 0).Formula = """line1" & vbLf & "line2""" |
数式の接尾辞と接頭辞の空白文字を保持するには、ReserveFormulaWhiteSpaces 列挙体を使用します。 空白文字には、スペース、Enter、改行などのさまざまな文字を含めることができます。
このサンプルコードは、数式に空白文字を保持する方法を示します。
C# |
コードのコピー
|
---|---|
IWorkbook workbook = fpSpread1.AsWorkbook(); IWorksheet sheet1 = workbook.Worksheets[0]; sheet1.Cells["A1"].Value = 1; sheet1.Cells["A2"].Value = 1; fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures |= CalcFeatures.ReserveFormulaWhiteSpaces; sheet1.Cells["C1"].Formula2 = "NOW( )"; sheet1.Cells["C2"].Formula2 = "SUM( Sheet1!A1:A2 )"; fpSpread1.AllowUserFormulas = true; |
VB |
コードのコピー
|
---|---|
Dim workbook As IWorkbook = fpSpread1.AsWorkbook() Dim sheet1 As IWorksheet = workbook.Worksheets(0) sheet1.Cells("A1").Value = 1 sheet1.Cells("A2").Value = 1 fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures Or CalcFeatures.ReserveFormulaWhiteSpaces sheet1.Cells("C1").Formula2 = "NOW( )" sheet1.Cells("C2").Formula2 = "SUM( Sheet1!A1:A2 )" fpSpread1.AllowUserFormulas = True |
設計時に、数式バーまたは数式エディタを使用してセル内に数式を入力できます。いずれもSPREADデザイナから利用できます。数式エディタは、[プロパティ]ウィンドウからも利用できます。詳細については「SPREADデザイナガイド」の「数式の入力」を参照してください。数式の作成に使用可能な関数および演算子の詳細については、「関数リファレンス」を参照してください。