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
26.0...1.02.03.0

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

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

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

Three cells with blanks
ABCDE
142.0=SUM(C14,D14,E14)2.0
1510.0...4.06.0
142.0...2.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
1715.0...1.02.03.04.05.06.07.07.0

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

Named range
ABCDE
2315.0=SUM(SumRange)4.05.06.0
244.0...1.03.0
2315.0...4.05.06.0

Range with blanks
ABCDEFGH
263.0=SUM(C26:H26)1.02.0
2715.0...4.05.06.0
263.0...1.02.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
299.0...1.0100.0200.08.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
26.0...1.02.03.0
5720.0=PRODUCT(C5:E6)1.02.03.0
614400.0...4.05.06.0
5720.0...1.02.03.0
81.0=PRODUCT(C8)1.0
94.0...4.0
81.0...1.0
112.0=PRODUCT(C11,D11)1.02.0
1220.0...4.05.0
112.0...1.02.0
146.0=PRODUCT(C14,D14,E14)1.02.03.0
15120.0...4.05.06.0
146.0...1.02.03.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
1770.0...1.02.03.04.05.06.07.07.0
204.0=PRODUCT(D20,C20,C20,D20)1.02.0
21400.0...4.05.0
204.0...1.02.0
23120.0=PRODUCT(ProductRange)4.05.06.0
246.0...1.02.03.0
23120.0...4.05.06.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
26210.0...1.02.03.0100.05.0200.07.07.0

COUNT (does not support blanks!)
ABCDEFGHI
293.0=COUNT(C29:E29)1.02.03.0
303.0...4.05.06.0
293.0...1.02.03.0
326.0=COUNT(C32:E33)1.02.03.0
336.0...4.05.06.0
326.0...1.02.03.0
351.0=COUNT(C35)1.0
361.0...4.0
351.0...1.0
382.0=COUNT(C38,D38)1.02.0
392.0...4.05.0
382.0...1.02.0
413.0=COUNT(C41,D41,E41)1.02.03.0
423.0...4.05.06.0
413.0...1.02.03.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
444.0...1.02.03.04.05.06.07.07.0
474.0=COUNT(D47,C47,C47,D47)1.02.0
484.0...4.05.0
474.0...1.02.0
503.0=COUNT(CountRange)4.05.06.0
513.0...1.02.03.0
503.0...4.05.06.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
535.0...1.02.03.0100.05.0200.07.07.0

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

AVERAGE (does not support blanks!)
ABCDEFGHI
592.0=AVERAGE(C59:E59)1.02.03.0
605.0...4.05.06.0
592.0...1.02.03.0
623.5=AVERAGE(C62:E63)1.02.03.0
635.0...4.05.06.0
623.5...1.02.03.0
651.0=AVERAGE(C65)1.0
664.0...4.0
651.0...1.0
681.5=AVERAGE(C68,D68)1.02.0
694.5...4.05.0
681.5...1.02.0
712.0=AVERAGE(C71,D71,E71)1.02.03.0
725.0...4.05.06.0
712.0...1.02.03.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
743.75...1.02.03.04.05.06.07.07.0
771.5=AVERAGE(D77,C77,C77,D77)1.02.0
784.5...4.05.0
771.5...1.02.0
805.0=AVERAGE(AverageRange)4.05.06.0
812.0...1.02.03.0
805.0...4.05.06.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
833.6...1.02.03.0100.05.0200.07.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
86-1.0...-1.02.0-1.0
891.0=MIN(C89:E90)1.02.03.0
904.0...4.05.06.0
891.0...1.02.03.0
921.0=MIN(C92)1.0
934.0...4.0
921.0...1.0
951.0=MIN(C95,D95)1.02.0
964.0...4.05.0
951.0...1.02.0
981.0=MIN(C98,D98,E98)1.02.03.0
99-6.0...-4.0-5.0-6.0
981.0...1.02.03.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
1011.0...1.02.03.04.05.06.07.07.0
1041.0=MIN(D104,C104,C104,D104)1.02.0
1054.0...4.05.0
1041.0...1.02.0
1074.0=MIN(MinRange)4.05.06.0
1081.0...1.02.03.0
1074.0...4.05.06.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
1101.0...1.02.03.0100.05.0200.07.07.0

MAX (does not support blanks!)
ABCDEFGHI
1132.0=MAX(C113:E113)-1.02.0-1.0
1146.0...4.05.06.0
1132.0...-1.02.0-1.0
1166.0=MAX(C116:E117)1.02.03.0
1176.0...4.05.06.0
1166.0...1.02.03.0
1191.0=MAX(C119)1.0
1204.0...4.0
1191.0...1.0
1222.0=MAX(C122,D122)1.02.0
1235.0...4.05.0
1222.0...1.02.0
1253.0=MAX(C125,D125,E125)1.02.03.0
126-4.0...-4.0-5.0-6.0
1253.0...1.02.03.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
1287.0...1.02.03.04.05.06.07.07.0
1312.0=MAX(D131,C131,C131,D131)1.02.0
1325.0...4.05.0
1312.0...1.02.0
1346.0=MAX(MaxRange)4.05.06.0
1353.0...1.02.03.0
1346.0...4.05.06.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
1377.0...1.02.03.0100.05.0200.07.07.0

VARP (does not support blanks!)
ABCDEFGHI
1400.0=VARP(C140)1.0
1410.0...4.0
1400.0...1.0
1430.25=VARP(C143,D143)1.02.0
1440.25...4.05.0
1430.25...1.02.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
1464.64...1.02.03.0100.05.0200.07.07.0

VAR (does not support blanks!)
ABCDEFGHI
1490.5=VAR(C149,D149)1.02.0
1500.5...4.05.0
1490.5...1.02.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
1525.8...1.02.03.0100.05.0200.07.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
15840.688718279617696...-1.00.05.457.6212.714.5-100.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
16537.6704332172529...-1.00.05.457.6212.714.5-100.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
17226.092653061224492...-1.00.05.457.6212.714.5-100.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
1799933.430771428571...-1.00.05.457.6212.714.5-100.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
184-2.532706643504132...-1.00.05.457.6212.714.5-100.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
1896.5478454980828005...-1.00.05.457.6212.714.5-100.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
19610460.3069...-1.00.05.457.6212.714.5-100.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
1990.6666666666666666...1.02.03.04.05.06.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