© 2017 Fabian M. Suchanek

- it runs in your browser. No additional software is needed.
- it runs also when you're offline
- it is based on HTML, an open and human-readable file format
- it can export to TSV and Latex

For technical reasons, Spreadshit works only in Firefox and Chrome so far. Also, for security reasons, the browser cannot save your modified Spreadshit to disk. **You have to use the SAVE button inside the Spreadshit.** Using the browser function File->Save will not save your modifications! Again for security reasons, the SAVE button has to go through a rather lengthy user dialog before saving to disk.

Here is how a Spreadshit looks:

- Save a file
- You have to use the SAVE button that is on the top right of the Spreadshit. If you use your browser's File -> Save, your modifications will not be saved. Unfortunately, the SAVE button has to go through a rather lengthy user dialog before saving to disk, which is due to security reasons (Javascript is not allowed to access your hard drive).
- Copy cells
- Go to the upper left cell of the range that you want to copy. Press SHIFT, and use the cursor keys to go to the lower right cell of the range that you want to copy. Press CTRL+C (on Mac: Command+C). If you want to copy the cell values, make sure that the cursor is at the very beginning of the lower right cell. If you want to copy the cell formulas, move the cursor into the formula of lower right cell.
- Import data from another spreadsheet
- Open the other spreadsheet in Excel or LibreOffice. Select the range that you would like to copy. Press CTRL+C (on Mac: Command+C). Go to the Spreadshit. Go to the cell where you would like to paste. Press CTRL+V (on Mac: Command+V).
- Save as PDF
- Use the printing function of your browser. On a Mac, press Command+P, and click the little PDF button at the bottom left in the dialog window.
- Fill a cell
- Go to some cell and press ALT+DOWN. This copies the content of the cell to the cell below.

You can refer to a cell by any of the following:

- ColumnName.RowName
- The cell given by that particular column name and row name, e.g.,
`Lisa.Q1`

. - RowName.ColumnName
- Equivalent to
`ColumnName.RowName`

. - ColumnName
- The cell at the given column and the current row (!). If we use, e.g.,
`Q1`

in the 4th row, the value is the value in the 4th row of the column`Q1`

. - RowName
- The cell at the given row and the current column. If we use, e.g.,
`Mary`

in the 4th column, the value is the value in the 4th column of the row`Mary`

. - ColumnName.RowName1:RowName2
- The vertical range (vector) from
`ColumnName.RowName1`

to`ColumName.RowName2`

. If`ColumnName`

is omitted, the expression refers to the current column. - RowName.ColumnName1:ColumnName2
- The horizontal range (vector) from
`RowName.ColumnName1`

to`RowName.ColumnName2`

. If`RowName`

is omitted, the expression refers to the row column. This is used in the screenshot above in the gray cell. - RowName.#
- The entire horizontal row (vector) given by the row name — except the first column. If used in the same row, the expression refers only to the cells to the left of the current cell.
- ColumnName.#
- The entire vertical row (vector) given by the column name — except the first row. If used in the same column, the expression refers only to the cells above the current cell.

- cell references (e.g.,
`Lisa.Q1`

; see above) - function calls (e.g.,
`SUM(Lisa.Q1:Q4)`

; see below) - simple values (e.g.,
`42`

) - strings with quotes (e.g.,
`"42"`

) - the mathematical operators +, -, /, *
- the comparison operators =, !=, <=, >=, <, >
- bracketed expressions

- SUM(vector)
- computes the sum
- PRODUCT(vector)
- computes the product
- SUMPRODUCT(vector, vector)
- computes the dot product of the two vectors
- AVERAGE(vector)
- computes the average
- COUNT(vector)
- computes the number of cells in the vector that are not empty.
- MAX(vector)
- computes the maximum
- MIN(vector)
- computes the minimum
- ROUND(value, number)
- rounds the value to the given number of digits
- AND(value, ...)
- computes the logical AND
- OR(value, ...)
- computes the logical OR
- NOT(value)
- returns zero if the value evaluates to 0, and 1 else
- IF(condition, value1, value2)
- returns
`value2`

if`condition`

evaluates to zero, and`value1`

otherwise. - LOOKUP(value, vector, vector)
- finds the value in the first vector, returns the value in the second vector at the same index position.
- MAP(vector, expression)
- computes a new vector from the given vector, in which every element is replaced by the expression. In the expression, “#” refers to the element in the original vector. For example,
`MAP(Q1:Q4, #*2)`

will return a new vector from`Q1:Q4`

in which every element is multiplied by two.

The `MAP`

function serves to simulate the Excel functions `COUNTIF`

, `SUMIF`

, etc. For example:

- Count the number of cells with that have a value between 40 and 50:
`COUNT(MAP(Q1:Q4, IF(AND(#>40,#<50),1,"")))`

. - Average all positive numbers:
`AVERAGE(MAP(Q1:Q4, IF(#>0,#,"")))`

. - Sum all numbers, giving double weight to numbers above 100:
`SUM(MAP(Q1:Q4, IF(#>100,#*2,#)))`

.

This page does not use cookies. This page is free of Javascript. The share-button does not transmit information unless clicked.