У меня есть две ячейки в Excel (A1 и B1). Предполагается, что A1 будет меняться каждый месяц с различными значениями в зависимости от продаж. и B1 имеет существующую стоимость 100 долларов.

За август продажа составляет 150 долларов США (что указывается в ячейке А1). Я хочу добавить эти 150 долларов к существующим 100 долларам в ячейке В1, чтобы они стали 250 долларами (что очень просто).

На следующий месяц; однако я хочу ввести другое значение в ячейку A1; скажем, 200 долларов, и я хочу, чтобы эти 200 долларов были добавлены к 250 долларам в ячейке B1 и стали 450 долларов.

Я не хочу копировать и прошлое. В одной и той же указанной ячейке я хочу ввести разные значения, в то время как значение, вводимое каждый раз, добавляется к значению в ячейке B1.

Интересно, смогу ли я сделать это в Excel.

2 ответа2

0

Я не думаю, что вы можете делать именно то, что вы хотите, как только вы измените ячейку A1 со 150 на 200, старое значение 150 больше не существует.

Одна возможность состоит в том, что вы сохраняете все ежемесячные значения продаж в одном столбце и используете формулу в другом столбце для вычисления суммы всех значений. Например, если вы храните 100, 150 и 200 в A1, A2 и A3 соответственно, вы можете использовать формулу =Sum(A:A) чтобы вычислить сумму всех значений в столбце A. Обратите внимание, что для этого необходимо не храните что-либо еще в столбце A, в противном случае формула должна включать только те ячейки, которые могут содержать ежемесячные значения продаж, например =Sum(A1:A12) .

0

Вы можете достичь того, что вы хотите сделать с помощью программирования VBA. В вашем рабочем листе по умолчанию с именем скажем Sheet1 у вас есть ячейка A1, которая будет перезаписываться каждый месяц, а ячейка B1 - это то место, где вы хотите увидеть итоговую сумму.

Щелкните правой кнопкой мыши на Sheet1 и выберите View Code. Либо нажмите ALT + F11 и дважды щелкните по Sheet1 на левой панели под VBA Project.

Откроется пустое окно кода VBA. Введите следующий код в этом.

   Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range("A1")

    If Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

    Else
       If IsNumeric(Range("A1").Value) Then
            Range("B1").Value = Range("B1").Value + Range("A1").Value
       Else

       End If
    End If
End Sub

Сохранить и выйти. Сохраните книгу как имя файла.xlsm. т. е. макрос с включенной книгой. Теперь, когда вы перезаписываете значение в ячейке A1, оно будет добавлено к B1. Убедитесь, что вы обновляете А1 только тогда, когда это необходимо, иначе оно должно просто добавить его в В1. В этом коде не реализована такая проверка, так что A1 следует обновлять только раз в месяц! Просто базовая проверка, что A1 должен быть числовым, чтобы предотвратить ошибку во время выполнения.

Дополнительная ссылка https://support.microsoft.com/en-in/help/213612/how-to-run-a-macro-when- sure-cells-change-in-excel

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .