让我用一个例子解释一下。
我从网站上提取销售数据并对其进行计算,因此我会有两列:
Sales Company A | 15000 (from the website) Sales Company B | 24000 (from the website) ----------------------- Total | sum()
我希望能够覆盖销售额,以便影响总销售额,但不会失去原始价值。因此,例如,我可以在我的手机上手动更改公司A销售,点击输入并获得新的总计。如果我犯了一个错误,我可以删除公司A销售,它将回到原来的15000(不需要再次检索数据,我希望)。
这在excel上可行吗?或者是一个插件还是允许它的东西?
答案 0 :(得分:0)
好的,所以似乎没有简单的方法可以编码。所以这里是我在vba上的代码,它的工作方式: 1)创建一个名为Original的工作表,其中包含原始数据。 2)复制/复制工作表并将其称为可编辑,其中包含您要覆盖或不覆盖的可编辑数据。
以下代码适用于如果您在C1处修改单元格,它将复制两个完整范围的样式和公式,从原始到可编辑。然后,如果您修改任何其他单元格,它会将该单元格变为蓝色,因为您修改了它。如果删除单元格,它将从原始公式单元格中恢复该值。
我希望这可以帮助其他人,代码非常简单,易于修改。我只是希望有一些其他更好的方法,而不需要复制在我的情况下非常大的工作表。
Private Sub Worksheet_Change(ByVal target As Range) Application.ScreenUpdating = False ' if C1 is modified, copy most of the data from Original to Editable If target.Column = 3 And target.Row = 1 Then sbCopyRangeToAnotherSheet Else If IsEmpty(target.Value) Then ' if we delete this cell, copy it from Original to Editable Sheets("Original").Cells(target.Column, target.Row).Copy Destination:=Sheets("Editable").Cells(target.Column, target.Row) Else If Not target.Cells.HasFormula Then ' if the copied cell is not formula, it means it's modified value so change its color target.Cells.Interior.ColorIndex = 42 ' change cell color since you have edited manually this cell End If End If End If Application.ScreenUpdating = True End Sub 'In this example I am Copying the Data from Original to Editable sheets Sub sbCopyRangeToAnotherSheet() Application.DisplayAlerts = False Application.ScreenUpdating = False ' copy the required data Sheets("Original").Range("L3:V13").Copy Destination:=Sheets("Editable").Range("L3") Sheets("Original").Range("A50:AM172").Copy Destination:=Sheets("Editable").Range("A50") 'CopyCharts "Editable" Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub