# General Information

A formula is an algebraic expression that contains values, operators, functions, and references to cells. The following list takes a closer look at the compound parts of formulas:

**Values**: Expressions can contain numbers, booleans, strings, arrays. For example, all of the following formulas represent valid expressions that contain values of different type:*=3+4, ="Rad"&"Spreadsheet", =AND(TRUE, FALSE), =SUM({1, 2; 3, 4})*.**Operators**: Formulas can include arithmetic, comparison, cell reference, and text operators. Examples of expressions that use operators are:*=-1+2, =B1<=4, =SUM(A1:B4), ="Rad"&"Spreadsheet"*. More information about the supported operators can be found in the Operator article.**Cell references**: Formulas can contain references to cells or ranges of cells. For example, the expression*=B1+B2*adds the values of cells B1 and B2 of the current worksheet, while the formula*=SUM(B1:B5)*sums up the values of all cells between B1 and B5. Further information about cell references is available in the Cell References article.**Built-in functions**: You can take advantage of a large set of predefined functions that can be directly included in expressions. Examples of formulas that use built-in functions are:*=ABS(-5), =COS(PI()), =AND(B1, B2)<>OR(C1, C2)*. You can find the full list in the Functions article.

## Get and Set Formulas in Cells

In order to set the value of a cell to a formula use the **SetValue()** method of the CellSelection class and pass the formula string as an argument. In order to produce a formula value the string you enter should start with either **=** (equal) or **–** (minus) sign, otherwise, the method treats the input as plain text.

**Example 1** creates a workbook from scratch and adds a worksheet. Further, the code assigns the value =3+4 to cell A1.

**Example 1: Set formula**

```
Workbook workbook = new Workbook();
workbook.Worksheets.Add();
workbook.ActiveWorksheet.Cells[0, 0].SetValue("=3+4");
```

Additionally to entering formulas in cells, you can retrieve and inspect formula values. If you get the value of Cell[0, 0], the result will be an object of type **FormulaCellValue**. Just like other cell values, the **FormulaCellValue** class inherits from **CellValueBase** class and conforms to the **ICellValue** interface. Thus, the class exposes several important properties and useful methods that allow you to get information about both the entered value and its result value.

A closer look at the value of cell A1 will reveal that the two methods **GetValueAsString()** and **GetResultValueAsString()** return the original string of the expression and string of the computed result, respectively. Similarly, the **FormulaCellValue** offers information about the **CellValueType** of its value and result value through the **ValueType** and **ResultValueType** properties.

**Example 2: Get formula value**

```
FormulaCellValue formulaCellValue = workbook.ActiveWorksheet.Cells[0, 0].GetValue().Value as FormulaCellValue;
if (formulaCellValue != null)
{
RadExpression expression = formulaCellValue.Value;
//expression is AdditionExpression with operands 3 and 4
CellValueFormat format = workbook.ActiveWorksheet.Cells[0, 0].GetFormat().Value;
string valueAsString = formulaCellValue.GetValueAsString(format);
//valueAsString = "=3+4"
string resultValueAsString = formulaCellValue.GetResultValueAsString(format);
//resultAsString = "7"
CellValueType valueType = formulaCellValue.ValueType;
//valueType = Formula
CellValueType resultValueType = formulaCellValue.ResultValueType;
//resultValueType = Number
}
```