]> source.dussan.org Git - poi.git/commitdiff
add comments, adjust whitespace
authorJaven O'Neal <onealj@apache.org>
Mon, 20 Jun 2016 08:50:36 +0000 (08:50 +0000)
committerJaven O'Neal <onealj@apache.org>
Mon, 20 Jun 2016 08:50:36 +0000 (08:50 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1749276 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/formula/functions/Countifs.java
src/java/org/apache/poi/ss/formula/functions/Sumifs.java

index 95982fe67633b7e20e095e7fb648bbbea69ae7fe..15e6a1521e0a09d1c4b682c27c7962560aa5e726 100644 (file)
@@ -34,15 +34,22 @@ public class Countifs implements FreeRefFunction {
     public static final FreeRefFunction instance = new Countifs();
 
     public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
-        Double result = null;
-        if (args.length == 0 || args.length % 2 > 0) {
+        // https://support.office.com/en-us/article/COUNTIFS-function-dda3dc6e-f74e-4aee-88bc-aa8c2a866842?ui=en-US&rs=en-US&ad=US
+        // COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2]...)
+        // need at least 2 arguments and need to have an even number of arguments (criteria_range1, criteria1 plus x*(criteria_range, criteria))
+        if (args.length < 2 || args.length % 2 != 0) {
             return ErrorEval.VALUE_INVALID;
         }
-        for (int i = 0; i < args.length; ) {
+        
+        Double result = null;
+        // for each (criteria_range, criteria) pair
+        for (int i = 0; i < args.length; i += 2) {
             ValueEval firstArg = args[i];
             ValueEval secondArg = args[i + 1];
-            i += 2;
-            NumberEval evaluate = (NumberEval) new Countif().evaluate(new ValueEval[]{firstArg, secondArg}, ec.getRowIndex(), ec.getColumnIndex());
+            NumberEval evaluate = (NumberEval) new Countif().evaluate(
+                    new ValueEval[] {firstArg, secondArg},
+                    ec.getRowIndex(),
+                    ec.getColumnIndex());
             if (result == null) {
                 result = evaluate.getNumberValue();
             } else if (evaluate.getNumberValue() < result) {
index a7621de7bd2b7c1cb3a026654d00b3ceaa169877..81d0003fc5185e1ce49cd027197924823b00d9dd 100644 (file)
@@ -54,6 +54,8 @@ public final class Sumifs implements FreeRefFunction {
     public static final FreeRefFunction instance = new Sumifs();
 
     public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
+        // 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))
         if(args.length < 3 || args.length % 2 == 0) {
             return ErrorEval.VALUE_INVALID;