Excel 2003: извлечение результатов расчетов - PullRequest
0 голосов
/ 21 февраля 2012

Я хотел бы знать, существует ли способ связать ячейку так, чтобы она постоянно содержала результаты вычислений, чтобы даже при изменении входных данных для вычислений предыдущий результат все еще сохранялся.1002 * Для дальнейшей иллюстрации, например, когда, скажем, мой расчет равен x + 2 = y и x = 1 в первом случае.Я хочу иметь возможность связать ячейку для сохранения результата y = 3, а также ввода x = 1, даже когда я изменяю значение x.

Возможное решение - использовать условие IF иКоманда PASTE SPECIAL вместе, но я не уверен, как запрограммировать ее так, чтобы она была автоматизирована.Есть ли способ сделать это с помощью формул?Или я должен рисковать в VBA?

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Возможное решение - использовать условие IF и команду PASTE SPECIAL вместе, но я не уверен, как запрограммировать ее так, чтобы она была автоматизирована. Есть ли способ сделать это с помощью формул? Или я должен рисковать в VBA?

Это один из способов без использования команды PASTE SPECIAL. Вставьте код в соответствующую область кода рабочего листа. Пожалуйста, обратитесь к снимку 1 . Это всего лишь пример. Пожалуйста, измените его в соответствии с вашими требованиями. Код выполняет проверку того, что пользователь ввел какое-либо значение X (ячейка A2), и если пользователь сделал это, то захватывает значение Y (ячейка B2) и сохраняет его в столбце D. См. снимок 2 .

enter image description here

Снимок 1

enter image description here

Снимок 2

И это полный код. Хотя одно предостережение. Не пытайтесь использовать этот код без « .EnableEvents = False » или без обработки ошибок на основном листе.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastRow As Long

    On Error GoTo Whoa

    '~~> Check if any value was entered in cell A2
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With

        '~~> Get the next available line in Col D for output
        LastRow = Range("D" & Rows.Count).End(xlUp).Row + 1

        '~~> Save the value
        Range("D" & LastRow).Value = Range("B2").Value
    End If

LetsContinue:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

НТН

Sid

0 голосов
/ 21 февраля 2012

Вы можете скопировать значение ячейки y и вставить - только значения - в другую ячейку.Правый клик -> Специальная вставка -> Выбрать «значения»

...