нужна формула с временной переменной - PullRequest
0 голосов
/ 05 января 2019

мы все добавили информацию в наши головы, а затем записали результаты, например, простой подсчет, вчера я продал 10 яблок, за день до того, как я продал 5, всего 15, сегодня я продал 5, всего 20, простое уравнение, которое мы все делаем каждый день, даже не задумываясь об этом формула, которую я считаю, в основном гласит: A + B = Bnew

где А будет ежедневная продажа. Б будет общая продажа и Bnew это новый итог.

как мне сделать это в Excel, не занимая страницы с бегущими строками или причудливый скрипт Visual Basic.

Я хочу использовать максимум 3 ячейки Cell-1 = переменная переменная, (ежедневная продажа) Cell-2 = промежуточный итог всех продаж, к которым будет добавлен A1. и при необходимости Cell-3 для хранения содержимого Cell-2, как это делает наша память, пока мы обновляем общее количество.

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

спасибо за вашу помощь

Ответы [ 3 ]

0 голосов
/ 06 января 2019

Если ваша установка выглядит так: Sheet1:

enter image description here

тогда небольшой макрос vba в модуле листа из Sheet1 должен сделать свое дело:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then    
        Range("B2").Value = Range("B2").Value + Range("A2").Value    
    End If    
End Sub

Эта подпрограмма будет запускаться после каждого изменения рабочего листа. Он проверит, было ли изменение в ячейке A2. В этом случае значение в A2 будет добавлено к значению в B2.

enter image description here

0 голосов
/ 06 января 2019

Если вы согласны с небольшим количеством кода VBA, вы можете попробовать вставить приведенный ниже код в модуль рабочей таблицы для листа, в который вы вводите данные:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Assumes "daily sales" are entered into cell B2 and that "running total" is in cell A2
    If Not (Intersect(Target, Me.Range("B2")) Is Nothing) Then
        Me.Range("A2").Value2 = Application.Sum(Me.Range("A2").Value2, Target.Value2)
    End If
End Sub

(Одновременное нажатие Alt + F11 должно открыть редактор, затем вы можете найти модули рабочего листа слева).

Если вы затем введете число в ячейку B2, тогда ячейка A2 будет обновляться накопительным образом. Если вы введете число в ячейку, отличное от B2 или A2, вы обнаружите, что ячейка A2 не обновляется (в отличие от метода итеративных вычислений). Мы используем Application.Sum вместо + оператора, чтобы избежать ошибки Type Mismatch, если A2 или B2 содержат нечисловые данные.

Попробуй, посмотри, получится ли то, что тебе нужно.


Edit:

Если у вас есть несколько строк, вы можете попробовать что-то вроде ниже.

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Assumes "daily sales" are entered into column B and that "running total" is in column A
    If Target.Column = 2 Then
        Me.Cells(Target.Row, "A").Value2 = Application.Sum(Me.Cells(Target.Row, "A"), Target)
    End If
End Sub
0 голосов
/ 05 января 2019

Учитывая ограничения:

  • Нет вспомогательных столбцов ( "без записи страниц с итоговыми строками" )
  • Нет VBA ( "нет необычного визуального базового сценария" )
  • «Я хочу использовать не более 3 ячеек»

Я думаю, что оставшийся вариант - итеративный расчет? Я не знаю, может быть, кто-то еще может придумать лучшее решение. Но что касается итеративного расчета, вот как я настроил свой лист:

Setup

При этом используются две ячейки (игнорируются метки в строке 1):

  • В ячейке A2, у меня есть формула =A2+B2
  • Ячейка B2 пуста (готов к вводу некоторого числа)

Я тогда иду к File > Options > Formulas > Enable iterative calculation > Change "Maximum Iterations" to 1 > OK

Любые уведомления, касающиеся циклических ссылок, теперь должны исчезнуть, и если я добавлю число в ячейку B2, ячейка A2 обновится так, как вы описали в своем посте. Надеюсь, вы можете повторить это и на своей машине.

Следует отметить, что параметр итеративного расчета, который вы изменяете, распространяется на все приложения, поэтому я считаю, что он влияет на все другие рабочие книги. Что-то иметь в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...