根据输入的值更改单元格的值

时间:2014-02-18 19:02:36

标签: excel vba validation excel-formula vlookup

我正在尝试根据用户输入单元格的内容创建公式语句。如果用户输入012,则需要更改THE SAME单元​​格的值。例如:

如果用户在单元格E2中输入“1”,则需要更改为“2500” 如果用户在单元格E2中输入“0”,则需要保持0 如果用户在单元格E2中输入“2”,则需要更改为“5000”

这有可能实现吗? 如果是这样,有什么公式是必要的? 我没有运气尝试过不同的方法,因为我不断得到循环循环错误。这是否意味着这是不可能的?
可能与VBA?

2 个答案:

答案 0 :(得分:1)

例如:

=VLOOKUP(A8,$C$1:$D$3,2,0)  
A9中的

将根据一个小的查找表以蓝色响应触发值,如框中所示。

通过验证,在A1,数据,数据验证,数据验证...,设置,允许列表,来源0,2500,5000确定。这将创建一个小的下拉箭头,当点击它时会打开一个小窗口,从中只能选择三个指定值中的一个。

SO21862981 example

答案 1 :(得分:1)

您必须使用某些VBA攻击此问题;特别是Worksheet_Change事件宏。如果使用值过度键入公式,则公式无法重写它们所在的单元格。

右键单击工作表的名称标签,然后选择查看代码。当VBE打开时,将以下内容粘贴到工作表代码窗格中,标题为 Book1 - Sheet1(Code)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E2")) Is Nothing Then
        On Error GoTo bm_Safe_Exit
        Application.EnableEvents = False
        With Range("E2")
            Select Case .Value2
                Case 0
                    'do nothing
                Case 1
                    .Value = 2500
                Case 2
                    .Value = 5000
                Case Else
                    'possibly clear the cell contents as undesirable
                    '.ClearContents
            End Select
        End With
    End If

bm_Safe_Exit:
        Application.EnableEvents = True
End Sub

我留下了一个注释代码行,以删除任何不是 0,1 2 的条目。如果这是首选行为,请取消注释。

点击 Alt + Q 返回工作表。在E2中键入三个值中的任何一个都应该具有所需的结果。

请注意Application.EnableEvents property暂时关闭。这是因为您正在更改工作表上的值,并希望避免启动另一个尝试让例程自行运行的事件。