/** * SUBTOTAL * * Returns a subtotal in a list or database. * * @param int the number 1 to 11 that specifies which function to * use in calculating subtotals within a list. * @param array of mixed Data Series * @return float */ public static function SUBTOTAL() { $aArgs = Functions::flattenArray(func_get_args()); // Calculate $subtotal = array_shift($aArgs); if (is_numeric($subtotal) && !is_string($subtotal)) { switch ($subtotal) { case 1: return Statistical::AVERAGE($aArgs); case 2: return Statistical::COUNT($aArgs); case 3: return Statistical::COUNTA($aArgs); case 4: return Statistical::MAX($aArgs); case 5: return Statistical::MIN($aArgs); case 6: return self::PRODUCT($aArgs); case 7: return Statistical::STDEV($aArgs); case 8: return Statistical::STDEVP($aArgs); case 9: return self::SUM($aArgs); case 10: return Statistical::VARFunc($aArgs); case 11: return Statistical::VARP($aArgs); } } return Functions::VALUE(); }
/** * DMAX * * Returns the largest number in a column of a list or database that matches conditions you that * specify. * * Excel Function: * DMAX(database,field,criteria) * * @access public * @category Database Functions * @param mixed[] $database The range of cells that makes up the list or database. * A database is a list of related data in which rows of related * information are records, and columns of data are fields. The * first row of the list contains labels for each column. * @param string|integer $field Indicates which column is used in the function. Enter the * column label enclosed between double quotation marks, such as * "Age" or "Yield," or a number (without quotation marks) that * represents the position of the column within the list: 1 for * the first column, 2 for the second column, and so on. * @param mixed[] $criteria The range of cells that contains the conditions you specify. * You can use any range for the criteria argument, as long as it * includes at least one column label and at least one cell below * the column label in which you specify a condition for the * column. * @return float * */ public static function DMAX($database, $field, $criteria) { $field = self::fieldExtract($database, $field); if (is_null($field)) { return null; } // Return return Statistical::MAX(self::getFilteredColumn($database, $field, $criteria)); }