1 package org.simantics.spreadsheet.solver.formula;
3 import org.simantics.spreadsheet.SpreadsheetMatrix;
4 import org.simantics.spreadsheet.Spreadsheets;
5 import org.simantics.spreadsheet.solver.formula.parser.ast.AstArgList;
6 import org.simantics.spreadsheet.solver.formula.parser.ast.AstRange;
8 public class CountifFormulaFunction implements CellFormulaFunction<Integer> {
11 public Integer evaluate(CellValueVisitor visitor, AstArgList args) {
12 if (args.values.size() != 2) throw new IllegalStateException();
14 AstRange range = (AstRange) args.values.get(0);
15 SpreadsheetMatrix matrix = (SpreadsheetMatrix) range.accept(visitor);
18 crit = args.values.get(1).accept(visitor);
19 } catch (IllegalStateException e){
23 String criteria = Spreadsheets.asString(crit);
25 for (Object value : matrix.values) {
26 if (Spreadsheets.matchCriteria(value, criteria))
29 return Integer.valueOf(result);