code: public static function SUBTOTAL(...$args)
      {
          $aArgs = Functions::flattenArrayIndexed($args);
          $cellReference = array_pop($aArgs);
          $subtotal = array_shift($aArgs);
  
          // Calculate
          if ((is_numeric($subtotal)) && (!is_string($subtotal))) {
              if ($subtotal > 100) {
                  $aArgs = self::filterHiddenArgs($cellReference, $aArgs);
                  $subtotal = $subtotal - 100;
              }
  
              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();
      }
docs: 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