# Introduction to Deriscope – Part 4: Spreadsheet

In this article I show you how to manipulate the formulas created by the wizard in order to build functional Excel spreadsheets.

### Deriscope Formula Syntax Rules

The main spreadsheet formula that Deriscope exposes to Excel is *ds(r1, r2, …)* where *r1, r2*, … are ranges containing primarily key-value pairs.

Also available are the *dsi *and *dsv *variations.

*dsi* (stands for * dsIgnore*) does not return error if non-expected keys are found in the input data.

*dsv* (stand for * dsVolatile*) is registered as volatile with Excel, meaning it is recalculated by Excel even if none of the inputs has changed. In that regard it behaves like the built-in Excel function

*NOW()*.

Deriscope allows you to compose the input ranges in many different ways, as explained below.

You may paste the complete list by clicking on the button

and selecting Paste Demo Formulas as shown here

### Syntax Rule: One input range

The easiest way to build the ds formula is by supplying all input data in one single range, to the extent that this is possible.

This is also the method employed by the wizard when it creates and pastes formulas in the spreadsheet.

Two variations exist:

A) Keys aligned vertically on the left column

B) Keys aligned horizontally on the top row

### Syntax Rule: Several input ranges

If part of the input data is shared by many formulas, then you should split the input into several ranges.

The next picture demonstrates how this is done if several Payoff objects that differ on their strike value need to be created.

Use *Clone* instead of *Create*

The previous example can be also implemented by applying the *Clone* function, which creates a replica object, certain values of which may be optionally altered.

If you don't remember the syntax, you may ask the wizard to generate the formula for you as the demo below shows:

###
Use *Show *to display in the spreadsheet any object part

You will often need to place in the spreadsheet one or more elements of some object.

Deriscope supplies a function called Show that returns a custom defined portion of any given object.

You don't need to remember this function's syntax because the wizard can generate the right formula for you as this video demonstrates:

Use dsMergeH and dsMergeV to merge input ranges

Sometimes the input range expected by ds cannot be split in separate ranges. It must be supplied as one connected range.

Take as example the *DividendCurve::Create* function that creates an object of type *Dividend Curve*. This function in the case of discrete dividends expects a table of dividend payments that must be supplied as a single range of **2** columns and one or more rows, as the following image indicates:

As you see, the third input argument is the range *A9:B11* that contains two columns containing the dividend payment dates and amounts respectively.

But what can you do if the ranges containing the payment dates and amounts are disconnected?

In such a case, you can use the special Deriscope function *dsMergeH* – where *H* stands for *Horizontal* – that all it does is to merge two given ranges into one single connected range by placing them in a horizontal arrangement, one to the right of the other.

The following image shows how this is done in practice:

Similar and symmetrical to *dsMergeH* is the function *dsMergeV* – *V* for *Vertical* – that merges two given ranges by using a vertical arrangement, one below the other.

Feel free to contact me if you want to share any thoughts with regard to this product or if you want to request any particular features. Contact info and social media links are available at my web site https://www.deriscope.com