У меня есть колонка с 3 ячейками: A1, A2 и A3. Я хочу, чтобы числовая сумма 3 ячеек оставалась постоянной, когда я увеличивала или уменьшала любую из 3 ячеек. То есть мне нужно любое увеличение или уменьшение любой ячейки, чтобы она равномерно распределялась между двумя другими ячейками. Например, я начинаю с 3 + 5 + 2 = 10. Я изменяю 5 на 6, поэтому автоматически получаю 2,5 + 6 + 1,5 = 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
- выберите View Code - откроется окно VBE
- вставьте материал и закройте окно VBE
Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .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
Макросы должны быть включены, чтобы это работало!