Home | Quick Start | Documentation | Download | Support | Contribute

# Cells And Values In AFC

AFC supports the following types of values in cells:

• strings
• numbers (including monetary and percentage values)
• dates and times
• booleans

Internally, AFC really only supports two basic data types: numbers and strings. This suffices because Excel internally treats dates, times, and booleans as numbers, too.

For a particular engine compiled by AFC, the numbers are all of the same type. The default is the `double` type, which is what Excel uses as well. See the tutorial for details on the available numeric types and how to choose one.

## Cell References

AFC supports the following styles of cell and range references:

##### Relative reference
 A B C 2 1.0 =C2 1.0

##### Absolute references
 A B C 3 6.0 =((\$C\$3 + \$C3) + C\$3) 2.0

##### Simple name
 A B C 4 3.0 =MYCELL 3.0

##### Two names for same cell
 A B C 5 8.0 =(_MY_CELL_ + _MY_CELL) 4.0

##### Unconventional names
 A B C D E F G 6 5.0 =_MY.CELL.1X 5.0 7 6.0 =MY23.43CELL 6.0 8 7.0 =_12345 7.0 9 400.0 =((((A1B + A1_) + A1_1) + A_1) + A__1) 100.0 90.0 80.0 70.0 60.0

##### Range with cell references
 A B C D E 11 6.0 =SUM( C11:E11 ) 1.0 2.0 3.0

##### Range name
 A B C D E 12 15.0 =SUM( Range ) 4.0 5.0 6.0

##### References to other sheets
 A B C D 14 30.0 =(SecondSheet!B1 + CellOnThirdSheet) 10.0 20.0 15 30.0 ='Sheet with spaces'!B1 30.0 16 40.0 ='Sheet-with-hyphens'!B1 40.0 17 50.0 ='Sheet''with''quotes'!B1 50.0

## Empty Cells

AFC currently has no proper support for empty cells. It simply treats them like the number zero (`0.0`). This is usually correct (even for multiplication with `*`, where Excel treats empty cells as zero too), but fails most noticeably in aggregators like `COUNT`, `AVERAGE`, or `PRODUCT` (where Excel skips empty cells):

##### Empty cells with +
 A B C D 2 5.0 =(C2 + D2) 2.0 3.0 3 5.0 ... 5.0 4 6.0 ... 6.0

##### Empty cells with *
 A B C D 6 6.0 =(C6 * D6) 2.0 3.0 7 0.0 ... 5.0 8 0.0 ... 6.0

##### Empty cells with PRODUCT return 0!
 A B C D 10 6.0 =PRODUCT( C10, D10 ) 2.0 3.0 11 0.0 ... 5.0 Excel says: 5.0 12 0.0 ... 6.0 Excel says: 6.0

##### Empty cells with SUMIF
 A B C D E 14 10.0 =SUMIF( C14:E14, "=10" ) 10.0

## Formula Errors

AFC throws exceptions or returns error values for Excel error values:

##### Explicitly entered errors
 A B 2 !NA #N/A Excel says: #N/A 3 !NA =NA() Excel says: #N/A 4 !FE #NUM! Excel says: #NUM! 5 !FE #VALUE! Excel says: #VALUE! 6 !FE #DIV/0! Excel says: #DIV/0!

##### Errors as inputs
 A B C D 7 !FE =(C7 + D7) 1.0 #NUM! Excel says: #NUM! 8 !FE ... #NUM! 2.0 Excel says: #NUM!

##### Actual division by zero
 A B C 9 !+Inf/AE =(1.0 / C9) 0.0 Excel says: #DIV/0!

##### ISNA()
 A B C 11 true =ISNA( C11 ) #N/A 12 false ... 4711.0 13 false ... #NUM!

##### ISERR()
 A B C 15 false =ISERR( C15 ) #N/A 16 false ... 4711.0 17 true ... #NUM!

##### ISERROR()
 A B C 19 true =ISERROR( C19 ) #N/A 20 false ... 4711.0 21 true ... #NUM!

##### COUNTA() is OK
 A B C D E 23 3.0 =COUNTA( C23:E23 ) #N/A 4711.0 #NUM

##### COUNT() is currently broken
 A B C D E 24 3.0 =COUNT( C24:E24 ) #N/A 4712.0 #NUM Excel says: 1.0

## Numeric Precision

AFC ignores the number of decimal places specified for displaying cell results in Excel. If you want rounded results, you have to use the `ROUND()` function explicitly. This is consistent with Excel also not limiting the precision on intermediate results.