
У меня есть лист в Excel со списком чисел. Иногда мне нужно переместить единицы X из одной ячейки в другую.
Допустим, у меня есть класс детей, у каждого из которых есть определенное количество шариков. В таблице есть 2 столбца, первый столбец — имена, второй столбец — шарики. Джон дает 375 шариков Биллу. Я хочу обновить таблицу.
Сейчас я достаю калькулятор, выполняю вычитание и сложение и обновляю ячейки вручную.
Это громоздко и подвержено ошибкам. Есть ли способ лучше?
(Я знаю, что могу написать в ячейке «=8300+375», но в итоге в каждой ячейке будет невообразимо длинная формула..)
решение1
решение2
Мате Юхаспост вдохновил меня предложить вам VBA Macro, так как он быстрее и экономит время. И я верю, что вы справитесь с этим.
Как это работает:
- Я предполагаю, что у вас есть данные в Range
A2:B4
. Введите значения, которые вы хотите вычесть, в
C2:C4
.ОтВКЛАДКА «РАЗРАБОТЧИК», нажмитеРежим проектирования
затемВставлять& ОтЭлементы управления ActiveX
нажмитеЗначок кнопки управленияи нарисуйте его на
листе.Нажмите наКнопка управления, вы попадаете в редактор VB Windows.
Копировать вставитьэтот код между
Частная подкомандаButton1_Click()
Конец субтитра.
Range("C2:C4").Select Selection.Copy Range("B2").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract, SkipBlanks:= _ False, Transpose:=False Range("C2:C4").Select Selection.ClearContents Application.CutCopyMode = False
В редакторе VB Windows щелкнитеМеню Файлзатем ударилЗакрыть и вернуться в Microsoft Excel.
Наконец нажмите наКнопка управления.
Новые значения вы найдете в Column B
,(см. снимок экрана).
Примечание.
Если вы хотите вычесть старое значение из нового значения только в ячейке, то вы можете использовать этот код VBA.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 2 And Target.Row = 1 Then
NewVal = Range("B1").Value
Application.EnableEvents = False
Application.Undo
OldVal = Range("B1").Value
Range("B1").Value = NewVal
Range("B1").Value = NewVal - OldVal
Application.EnableEvents = True
End If
End Sub
НажиматьАЛЬТ+Ф11открыть редактор VB иКопировать вставитьпоказанный выше код какСтандартный модуль.
Как только вы перезапишете значение в
B1
, код
вычтет его из старого значения и перезапишетB1
новым значением.
Настройте диапазон данных по своему усмотрению.