2012-02-21 3 views
0

Я хотел бы знать, существует ли способ связать ячейку таким образом, чтобы она всегда содержала результаты вычисления, так что даже когда ввод в расчет был изменен, предыдущий результат все еще сохранен.Excel 2003: Извлечение результатов вычислений

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

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

ответ

0

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

+0

Привет, Я знаю, как использовать специальную вставку. Я хотел бы знать, как я могу программировать его так, чтобы определенные ячейки вели себя таким образом и постоянно сохраняли значения y и не изменялись при изменении x. Возможно, способ остановить его от переоценки? – user1222280

+0

, так что вам нужен список ячеек, которые хранят значения y для каждого x? –

+0

Да, можно ли это сделать? – user1222280

1

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

Вот один из способов без необходимости специальной вставки команды. Вставьте код в Соответствующий Область кода рабочего листа. Обратитесь к снимку . Это просто пример. Пожалуйста, измените его в соответствии с вашими требованиями. Что делает код, он проверяет, вводит ли пользователь какое-либо значение X (ячейка A2), и если пользователь выполнил его, тогда он захватит значение Y (ячейка B2) и сохранит его в поле Col 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

Смежные вопросы