org.apache.poi.ss.formula.functions.Sumifs Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aem-sdk-api Show documentation
Show all versions of aem-sdk-api Show documentation
The Adobe Experience Manager SDK
/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*/
package org.apache.poi.ss.formula.functions;
import org.apache.poi.ss.formula.eval.NumberEval;
import org.apache.poi.ss.formula.eval.ValueEval;
/**
* Implementation for the Excel function SUMIFS
*
* Syntax :
* SUMIFS ( sum_range, criteria_range1, criteria1,
* [criteria_range2, criteria2], ...)
*
* - sum_range Required. One or more cells to sum, including numbers or names, ranges,
* or cell references that contain numbers. Blank and text values are ignored.
* - criteria1_range Required. The first range in which
* to evaluate the associated criteria.
* - criteria1 Required. The criteria in the form of a number, expression,
* cell reference, or text that define which cells in the criteria_range1
* argument will be added
* - criteria_range2, criteria2, ... Optional. Additional ranges and their associated criteria.
* Up to 127 range/criteria pairs are allowed.
*
*/
public final class Sumifs extends Baseifs {
/**
* Singleton
*/
public static final FreeRefFunction instance = new Sumifs();
/**
* https://support.office.com/en-us/article/SUMIFS-function-c9e748f5-7ea7-455d-9406-611cebce642b
* COUNTIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...
* need at least 3 arguments and need to have an odd number of arguments (sum-range plus x*(criteria_range, criteria))
*/
@Override
protected boolean hasInitialRange() {
return true;
}
@Override
protected Aggregator createAggregator() {
return new Aggregator() {
double accumulator = 0.0;
@Override
public void addValue(ValueEval value) {
accumulator += (value instanceof NumberEval) ? ((NumberEval) value).getNumberValue() : 0.0;
}
@Override
public ValueEval getResult() {
return new NumberEval(accumulator);
}
};
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy