function _substituteCellref($cell)
    {
        $cell = strtoupper($cell);

        // Convert a column range: 'A:A' or 'B:G'
        if (preg_match("/([A-I]?[A-Z]):([A-I]?[A-Z])/", $cell, $match)) {
            list($no_use, $col1) =  $this->_cellToRowcol($match[1] .'1'); // Add a dummy row
            list($no_use, $col2) =  $this->_cellToRowcol($match[2] .'1'); // Add a dummy row
            return(array($col1, $col2));
        }

        // Convert a cell range: 'A1:B7'
        if (preg_match("/\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)/", $cell, $match)) {
            list($row1, $col1) =  $this->_cellToRowcol($match[1]);
            list($row2, $col2) =  $this->_cellToRowcol($match[2]);
            return(array($row1, $col1, $row2, $col2));
        }

        // Convert a cell reference: 'A1' or 'AD2000'
        if (preg_match("/\$?([A-I]?[A-Z]\$?\d+)/", $cell)) {
            list($row1, $col1) =  $this->_cellToRowcol($match[1]);
            return(array($row1, $col1));
        }

        // TODO use real error codes
        $this->raiseError("Unknown cell reference $cell", 0, PEAR_ERROR_DIE);
    }
function _substituteCellref($cell)
    {
        $cell = strtoupper($cell);

        // Convert a column range: 'A:A' or 'B:G'
        if (preg_match("/([A-I]?[A-Z]):([A-I]?[A-Z])/", $cell, $match)) {
            list($no_use, $col1) =  $this->_cellToRowcol($match[1] .'1'); // Add a dummy row
            list($no_use, $col2) =  $this->_cellToRowcol($match[2] .'1'); // Add a dummy row
            return(array($col1, $col2));
        }

        // Convert a cell range: 'A1:B7'
        if (preg_match("/\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)/", $cell, $match)) {
            list($row1, $col1) =  $this->_cellToRowcol($match[1]);
            list($row2, $col2) =  $this->_cellToRowcol($match[2]);
            return(array($row1, $col1, $row2, $col2));
        }

        // Convert a cell reference: 'A1' or 'AD2000'
        if (preg_match("/\$?([A-I]?[A-Z]\$?\d+)/", $cell)) {
            list($row1, $col1) =  $this->_cellToRowcol($match[1]);
            return(array($row1, $col1));
        }

        // TODO use real error codes
        $this->raiseError("Unknown cell reference $cell", 0, PEAR_ERROR_DIE);
    }
function _substituteCellref ( $ cell ) { $ cell = strtoupper ( $ cell ) ; // Convert a column range: 'A:A' or 'B:G'
 if ( preg_match ( "/([A-I]?[A-Z]):([A-I]?[A-Z])/" , $ cell , $ match ) ) { list ( $ no_use , $ col1 ) = $ this -> _cellToRowcol ( $ match [ 1 ] . '1' ) ; // Add a dummy row
 list ( $ no_use , $ col2 ) = $ this -> _cellToRowcol ( $ match [ 2 ] . '1' ) ; // Add a dummy row
 return ( array ( $ col1 , $ col2 ) ) ; } // Convert a cell range: 'A1:B7'
 if ( preg_match ( "/\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)/" , $ cell , $ match ) ) { list ( $ row1 , $ col1 ) = $ this -> _cellToRowcol ( $ match [ 1 ] ) ; list ( $ row2 , $ col2 ) = $ this -> _cellToRowcol ( $ match [ 2 ] ) ; return ( array ( $ row1 , $ col1 , $ row2 , $ col2 ) ) ; } // Convert a cell reference: 'A1' or 'AD2000'
 if ( preg_match ( "/\$?([A-I]?[A-Z]\$?\d+)/" , $ cell ) ) { list ( $ row1 , $ col1 ) = $ this -> _cellToRowcol ( $ match [ 1 ] ) ; return ( array ( $ row1 , $ col1 ) ) ; } // TODO use real error codes
 $ this -> raiseError ( "Unknown cell reference $cell" , 0 , PEAR_ERROR_DIE ) ; }
Substitute an Excel cell reference in A1 notation for  zero based row and
column values in an argument list.

Ex: ("A4", "Hello") is converted to (3, 0, "Hello").

@access private
@param string $cell The cell reference. Or range of cells.
@return array
Substitute an Excel cell reference in A1 notation for zero based row and column values in an argument list .