code: func shiftCell(cellID string, dx, dy int) string {
  	fx, fy, _ := GetCoordsFromCellIDString(cellID)
  
  	// Is fixed column?
  	fixedCol := strings.Index(cellID, fixedCellRefChar) == 0
  
  	// Is fixed row?
  	fixedRow := strings.LastIndex(cellID, fixedCellRefChar) > 0
  
  	if !fixedCol {
  		// Shift column
  		fx += dx
  	}
  
  	if !fixedRow {
  		// Shift row
  		fy += dy
  	}
  
  	// New shifted cell
  	shiftedCellID := GetCellIDStringFromCoords(fx, fy)
  
  	if !fixedCol && !fixedRow {
  		return shiftedCellID
  	}
  
  	// There are absolute references, need to put the $ back into the formula.
  	letterPart := strings.Map(letterOnlyMapF, shiftedCellID)
  	numberPart := strings.Map(intOnlyMapF, shiftedCellID)
  
  	result := ""
  
  	if fixedCol {
  		result += "$"
  	}
  
  	result += letterPart
  
  	if fixedRow {
  		result += "$"
  	}
  
  	result += numberPart
  
  	return result
  }
docs: // shiftCell returns the cell shifted according to dx and dy taking into consideration of absolute
  // references with dollar sign ($)