2014-02-18 120 views
0

我试图根据用户输入单元格来创建公式语句。如果用户输入0,12,则必须更改“同一”单元格的值。例如:根据输入的值更改单元格的值

如果用户输入“1”到细胞E2,它需要改变为“2500”
如果用户输入“0”到细胞E2,它需要如果用户留在0
输入“2”进入单元格E2,它需要更改为“5000”

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

+0

你需要VBA(脚本)来做那样的事情。一个单元格包含未经过进一步处理的明文数据或公式,而不是同时进行,除非您有脚本正在运行以执行任何处理。 – Jerry

+0

谢谢,我认为这会归结到这一点。你知道如何用VBA实现这一点吗? –

+0

只是好奇,为什么? (例如,为什么不使用数据验证或VLOOKUP?) – pnuts

回答

1

例如:如图中框

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

在A9将基于一个小查找表在蓝色触发值作出响应。

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

SO21862981 example

0

你将不得不攻击这个问题的一些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或任何条目。如果这是首选行为,请取消注释。

Tap Alt + Q返回到工作表。将这三个值中的任何一个输入到E2中应该具有期望的结果。

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

相关问题