function operate(start, amount) {
  var modifyFormula = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  var columnsAmount = -amount;
  var matrix = this.matrix,
      dataProvider = this.dataProvider,
      sheet = this.sheet;
  var translate = [0, columnsAmount];
  var indexOffset = Math.abs(columnsAmount) - 1;
  var removedCellRef = matrix.removeCellRefsAtRange({
    column: start
  }, {
    column: start + indexOffset
  });
  var toRemove = [];
  (0, _array.arrayEach)(matrix.data, function (cell) {
    (0, _array.arrayEach)(removedCellRef, function (cellRef) {
      if (!cell.hasPrecedent(cellRef)) {
        return;
      }

      cell.removePrecedent(cellRef);
      cell.setState(_value.default.STATE_OUT_OFF_DATE);
      (0, _array.arrayEach)(sheet.getCellDependencies(cell.row, cell.column), function (cellValue) {
        cellValue.setState(_value.default.STATE_OUT_OFF_DATE);
      });
    });

    if (cell.column >= start && cell.column <= start + indexOffset) {
      toRemove.push(cell);
    }
  });
  matrix.remove(toRemove);
  (0, _array.arrayEach)(matrix.cellReferences, function (cell) {
    if (cell.column >= start) {
      cell.translateTo.apply(cell, translate);
    }
  });
  (0, _array.arrayEach)(matrix.data, function (cell) {
    var origRow = cell.row,
        origColumn = cell.column;

    if (cell.column >= start) {
      cell.translateTo.apply(cell, translate);
      cell.setState(_value.default.STATE_OUT_OFF_DATE);
    }

    if (modifyFormula) {
      var row = cell.row,
          column = cell.column;
      var value = dataProvider.getSourceDataAtCell(row, column);

      if ((0, _utils.isFormulaExpression)(value)) {
        var startCoord = (0, _utils.cellCoordFactory)('column', start);
        var expModifier = new _expressionModifier.default(value);
        expModifier.useCustomModifier(customTranslateModifier);
        expModifier.translate({
          column: columnsAmount
        }, startCoord({
          row: origRow,
          column: origColumn
        }));
        dataProvider.updateSourceData(row, column, expModifier.toString());
      }
    }
  });
}
Execute changes.

@param {Number} start Index column from which the operation starts.
@param {Number} amount Count of columns to be removed.
@param {Boolean} [modifyFormula=true] If `true` all formula expressions will be modified according to the changes.
                                      `false` value is used by UndoRedo plugin which saves snapshoots before alter
                                      operation so it doesn't modify formulas if undo action is triggered.