AFC - Abacus Formula Compiler for Java

Aggregators In AFC

Aggregators are functions that compute values over (possibly non-contiguous) ranges of values.

SUM and Range Specifications

I use the SUM function to show the types of range specification supported by AFC, as well as the support for SUM as such:

1-dim range
ABCDE
26.0=SUM( C2:E2 )1.02.03.0
315.0...4.05.06.0

2-dim range
ABCDE
521.0=SUM( C5:E6 )1.02.03.0
630.0=(SUM( C6:E6 ) * 2.0)4.05.06.0

Single cell
ABC
81.0=SUM( C8 )1.0
94.0...4.0

Multiple cells
ABCD
113.0=SUM( C11, D11 )1.02.0
129.0...4.05.0

Three cells with blanks
ABCDE
142.0=SUM( C14, D14, E14 )2.0
1510.0...4.06.0

Non-contiguous cells
ABCDEFGHI
1715.0=SUM( C17, G17, D17, I17 )1.02.03.04.05.06.07.07.0
1817.0...7.06.05.04.03.02.01.07.0

Cells referenced multiply
ABCD
206.0=SUM( D20, C20, C20, D20 )1.02.0
2118.0...4.05.0

Named range
ABCDE
2315.0=SUM( SumRange )4.05.06.0
244.0=SUM( C24:E24 )1.03.0

Range with blanks
ABCDEFGH
263.0=SUM( C26:H26 )1.02.0
2715.0...4.05.06.0

Mixture of ranges and cells with blanks
ABCDEFGHI
299.0=SUM( C29:E29, G29, I29 )1.0100.0200.08.07.0
306.0...2.080.04.07.0

Other Aggregators Like SUM

There are a number of other supported aggregation functions which behave much like SUM in the type of arguments they accept. They are:

PRODUCT (does not support blanks!)
ABCDEFGHI
26.0=PRODUCT( C2:E2 )1.02.03.0
3120.0...4.05.06.0
5720.0=PRODUCT( C5:E6 )1.02.03.0
614400.0=(PRODUCT( C6:E6 ) ^ 2.0)4.05.06.0
81.0=PRODUCT( C8 )1.0
94.0...4.0
112.0=PRODUCT( C11, D11 )1.02.0
1220.0...4.05.0
146.0=PRODUCT( C14, D14, E14 )1.02.03.0
15120.0...4.05.06.0
1770.0=PRODUCT( C17, G17, D17, I17 )1.02.03.04.05.06.07.07.0
18126.0...7.06.05.04.03.02.01.07.0
204.0=PRODUCT( D20, C20, C20, D20 )1.02.0
21400.0...4.05.0
23120.0=PRODUCT( ProductRange )4.05.06.0
246.0=PRODUCT( C24:E24 )1.02.03.0
26210.0=PRODUCT( C26:E26, G26, I26 )1.02.03.0100.05.0200.07.07.0
2730240.0...6.07.08.080.09.010.07.0

COUNT (does not support blanks!)
ABCDEFGHI
293.0=COUNT( C29:E29 )1.02.03.0
303.0...4.05.06.0
326.0=COUNT( C32:E33 )1.02.03.0
336.0=(COUNT( C33:E33 ) * 2.0)4.05.06.0
351.0=COUNT( C35 )1.0
361.0...4.0
382.0=COUNT( C38, D38 )1.02.0
392.0...4.05.0
413.0=COUNT( C41, D41, E41 )1.02.03.0
423.0...4.05.06.0
444.0=COUNT( C44, G44, D44, I44 )1.02.03.04.05.06.07.07.0
454.0...7.06.05.04.03.02.01.07.0
474.0=COUNT( D47, C47, C47, D47 )1.02.0
484.0...4.05.0
503.0=COUNT( CountRange )4.05.06.0
513.0=COUNT( C51:E51 )1.02.03.0
535.0=COUNT( C53:E53, G53, I53 )1.02.03.0100.05.0200.07.07.0
545.0...6.07.08.080.09.010.07.0

COUNTA
ABCDE
563.0=COUNTA( C56:E56 )1.0 true
573.0...false5.0Hello

AVERAGE (does not support blanks!)
ABCDEFGHI
592.0=AVERAGE( C59:E59 )1.02.03.0
605.0...4.05.06.0
623.5=AVERAGE( C62:E63 )1.02.03.0
635.0=AVERAGE( C63:E63, C63:E63 )4.05.06.0
651.0=AVERAGE( C65 )1.0
664.0...4.0
681.5=AVERAGE( C68, D68 )1.02.0
694.5...4.05.0
712.0=AVERAGE( C71, D71, E71 )1.02.03.0
725.0...4.05.06.0
743.75=AVERAGE( C74, G74, D74, I74 )1.02.03.04.05.06.07.07.0
754.25...7.06.05.04.03.02.01.07.0
771.5=AVERAGE( D77, C77, C77, D77 )1.02.0
784.5...4.05.0
805.0=AVERAGE( AverageRange )4.05.06.0
812.0=AVERAGE( C81:E81 )1.02.03.0
833.6=AVERAGE( C83:E83, G83, I83 )1.02.03.0100.05.0200.07.07.0
848.0...6.07.08.080.09.010.07.0

MIN (does not support blanks!)
ABCDEFGHI
86-1.0=MIN( C86:E86 )-1.02.0-1.0
874.0...4.05.06.0
891.0=MIN( C89:E90 )1.02.03.0
904.0=MIN( C90:E90 )4.05.06.0
921.0=MIN( C92 )1.0
934.0...4.0
951.0=MIN( C95, D95 )1.02.0
964.0...4.05.0
981.0=MIN( C98, D98, E98 )1.02.03.0
99-6.0...-4.0-5.0-6.0
1011.0=MIN( C101, G101, D101, I101 )1.02.03.04.05.06.07.07.0
1021.0...7.06.05.04.03.02.01.07.0
1041.0=MIN( D104, C104, C104, D104 )1.02.0
1054.0...4.05.0
1074.0=MIN( MinRange )4.05.06.0
1081.0=MIN( C108:E108 )1.02.03.0
1101.0=MIN( C110:E110, G110, I110 )1.02.03.0100.05.0200.07.07.0
1116.0...6.07.08.080.09.010.07.0

MAX (does not support blanks!)
ABCDEFGHI
1132.0=MAX( C113:E113 )-1.02.0-1.0
1146.0...4.05.06.0
1166.0=MAX( C116:E117 )1.02.03.0
1176.0=MAX( C117:E117 )4.05.06.0
1191.0=MAX( C119 )1.0
1204.0...4.0
1222.0=MAX( C122, D122 )1.02.0
1235.0...4.05.0
1253.0=MAX( C125, D125, E125 )1.02.03.0
126-4.0...-4.0-5.0-6.0
1287.0=MAX( C128, G128, D128, I128 )1.02.03.04.05.06.07.07.0
1297.0...7.06.05.04.03.02.01.07.0
1312.0=MAX( D131, C131, C131, D131 )1.02.0
1325.0...4.05.0
1346.0=MAX( MaxRange )4.05.06.0
1353.0=MAX( C135:E135 )1.02.03.0
1377.0=MAX( C137:E137, G137, I137 )1.02.03.0100.05.0200.07.07.0
13810.0...6.07.08.080.09.010.07.0

VARP (does not support blanks!)
ABCDEFGHI
1400.0=VARP( C140 )1.0
1410.0...4.0
1430.25=VARP( C143, D143 )1.02.0
1440.25...4.05.0
1464.64=VARP( C146:E146, G146, I146 )1.02.03.0100.05.0200.07.07.0
1472.0...6.07.08.080.09.010.07.0

VAR (does not support blanks!)
ABCDEFGHI
1490.5=VAR( C149, D149 )1.02.0
1500.5...4.05.0
1525.8=VAR( C152:E152, G152, I152 )1.02.03.0100.05.0200.07.07.0
1532.5...6.07.08.080.09.010.07.0

STDEV (does not support blanks!)
ABCDEFGHI
1552.8284271247461903=STDEV( C155, D155 )-1.03.0
1562.0816659994661326=STDEV( C156, D156, E156 )-1.00.03.0
15840.688718279617696=STDEV( C158:E158, F158:H158, I158 )-1.00.05.457.6212.714.5-100.07.0
1594.15187851918806...-10.00.01.00.0-1.0-2.03.07.0

STDEVP (does not support blanks!)
ABCDEFGHI
1610.0=STDEVP( C161 )7.0
1621.5=STDEVP( C162, D162 )2.05.0
1632.0548046676563256=STDEVP( C163, D163, E163 )2.00.05.0
16537.6704332172529=STDEVP( C165:E165, F165:H165, I165 )-1.00.05.457.6212.714.5-100.07.0
1663.843892584878203...-10.00.01.00.0-1.0-2.03.07.0

AVEDEV (does not support blanks!)
ABCDEFGHI
1680.0=AVEDEV( C168 )40.0
1692.0=AVEDEV( C169, D169 )-1.03.0
1701.5555555555555554=AVEDEV( C170, D170, E170 )-1.00.03.0
17226.092653061224492=AVEDEV( C172:E172, F172:H172, I172 )-1.00.05.457.6212.714.5-100.07.0
1732.693877551020408...-10.00.01.00.0-1.0-2.03.07.0

DEVSQ (does not support blanks!)
ABCDEFGHI
1750.0=DEVSQ( C175 )40.0
1768.0=DEVSQ( C176, D176 )-1.03.0
1778.666666666666668=DEVSQ( C177, D177, E177 )-1.00.03.0
1799933.430771428571=DEVSQ( C179:E179, F179:H179, I179 )-1.00.05.457.6212.714.5-100.07.0
180103.4285714285714...-10.00.01.00.0-1.0-2.03.07.0

SKEW (does not support blanks!)
ABCDEFGHI
1820.9352195295828235=SKEW( C182, D182, E182 )1.02.04.0
184-2.532706643504132=SKEW( C184:E184, F184:H184, I184 )-1.00.05.457.6212.714.5-100.07.0
185-1.8491263727532468...-10.00.01.00.0-1.0-2.03.07.0

KURT (does not support blanks!)
ABCDEFGHI
1870.3905325443786989=KURT( C187, D187, E187, F187 )1.02.04.0-1.0
1896.5478454980828005=KURT( C189:E189, F189:H189, I189 )-1.00.05.457.6212.714.5-100.07.0
1904.2380757608131585...-10.00.01.00.0-1.0-2.03.07.0

SUMSQ
ABCDEFGHI
19249.0=SUMSQ( C192 )7.0
19329.0=SUMSQ( C193, D193 )2.05.0
19429.0=SUMSQ( C194, D194, E194 )2.05.0
19610460.3069=SUMSQ( C196:E196, F196:H196, I196 )-1.00.05.457.6212.714.5-100.07.0
197115.0...-10.01.00.0-1.0-2.03.07.0

COVAR
ABCDEFGH
1990.6666666666666666=COVAR( C199:E199, F199:H199 )1.02.03.04.05.06.0
200-0.1111111111111111...2.03.02.02.02.03.0
2020.25=COVAR( C202:D202, E202:F202 )1.02.03.04.0
203!NA=COVAR( C203:E203, F203:G203 )2.03.05.04.05.0Excel says: #N/A

SUMIF
ABCDEFGHI
20543.0=SUMIF( D205:F205, (">" & C205), G205:I205 )10.010.011.012.020.021.022.07.0
20623.0=SUMIF( D206:F206, (">" & C206) )10.010.011.012.0