Exemple #1
0
 /**
  *	AVERAGEIF
  *
  *	Returns the average value from a range of cells that contain numbers within the list of arguments
  *
  *	Excel Function:
  *		AVERAGEIF(value1[,value2[, ...]],condition)
  *
  *	@access	public
  *	@category Mathematical and Trigonometric Functions
  *	@param	mixed		$arg,...		Data values
  *	@param	string		$condition		The criteria that defines which cells will be checked.
  *	@return	float
  */
 public static function AVERAGEIF($aArgs, $condition, $averageArgs = array())
 {
     // Return value
     $returnValue = 0;
     $aArgs = self::flattenArray($aArgs);
     $averageArgs = self::flattenArray($averageArgs);
     if (count($averageArgs) == 0) {
         $averageArgs = $aArgs;
     }
     $condition = self::_ifCondition($condition);
     // Loop through arguments
     $aCount = 0;
     foreach ($aArgs as $key => $arg) {
         if (!is_numeric($arg)) {
             $arg = Calculation::_wrapResult(strtoupper($arg));
         }
         $testCondition = '=' . $arg . $condition;
         if (Calculation::getInstance()->_calculateFormulaValue($testCondition)) {
             if (is_null($returnValue) || $arg > $returnValue) {
                 $returnValue += $arg;
                 ++$aCount;
             }
         }
     }
     // Return
     if ($aCount > 0) {
         return $returnValue / $aCount;
     } else {
         return self::$_errorCodes['divisionbyzero'];
     }
 }