我有一列包含 3 個單元格:A1、A2 和 A3。我希望當我增加或減少 3 個單元格中的任何一個時,3 個單元格的總數保持不變。也就是說,我需要任何單元格的任何增加或減少都均勻分佈在其他 2 個單元格之間。例如,我從 3 + 5 + 2 = 10 開始。請記住,事實上我將有大約 20 個單元格,我希望它們等於常數 100。
答案1
充滿A1透過A20值總計為100:
然後放置以下內容事件巨集在工作表程式碼區域中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, Delta As Double
Set rng = Range("A1:A20")
If Intersect(Target, rng) Is Nothing Then Exit Sub
Delta = (100 - Range("A21").Value) / 19
Application.EnableEvents = False
For Each r In rng
If r.Address <> Target.Address Then
r.Value = r.Value + Delta
End If
Next r
Application.EnableEvents = True
End Sub
一旦巨集安裝並處於活動狀態,它將偵測到中值的任何更改A1透過A20並調整其他值以保留 100 一次僅更改一個儲存格。
因為它是工作表程式碼,所以非常容易安裝並自動使用:
- 右鍵單擊 Excel 視窗底部附近的選項卡名稱
- 選擇查看代碼 - 這將打開一個 VBE 窗口
- 將內容貼進去並關閉 VBE 窗口
如果您有任何疑慮,請先在試用工作表上嘗試。
如果儲存工作簿,巨集將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案另存為 .xlsm 而不是 .xlsx
若要刪除巨集:
- 如上所示調出 VBE 窗口
- 清除程式碼
- 關閉VBE視窗
要了解有關巨集的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有關事件巨集(工作表程式碼)的更多信息,請參閱:
http://www.mvps.org/dmcritchie/excel/event.htm
必須啟用巨集才能使其工作!