我试图根据用户输入单元格来创建公式语句。如果用户输入0
,1
或2
,则必须更改“同一”单元格的值。例如:根据输入的值更改单元格的值
如果用户输入“1”到细胞E2,它需要改变为“2500”
如果用户输入“0”到细胞E2,它需要如果用户留在0
输入“2”进入单元格E2,它需要更改为“5000”
这是可能实现的吗?
如果是这样,什么公式是必要的? 我已经尝试过不同的方式没有运气,因为我不断收到一个循环循环错误。这是否意味着这是不可能的?
可能与VBA?
我试图根据用户输入单元格来创建公式语句。如果用户输入0
,1
或2
,则必须更改“同一”单元格的值。例如:根据输入的值更改单元格的值
如果用户输入“1”到细胞E2,它需要改变为“2500”
如果用户输入“0”到细胞E2,它需要如果用户留在0
输入“2”进入单元格E2,它需要更改为“5000”
这是可能实现的吗?
如果是这样,什么公式是必要的? 我已经尝试过不同的方式没有运气,因为我不断收到一个循环循环错误。这是否意味着这是不可能的?
可能与VBA?
例如:如图中框
=VLOOKUP(A8,$C$1:$D$3,2,0)
在A9将基于一个小查找表在蓝色触发值作出响应。
使用验证,在A1,数据,数据验证,数据验证...,设置,允许列表,来源0,2500,5000
确定。这会创建一个向下的小箭头,当点击这个箭头时,会打开一个小窗口,从这个窗口中只能选择三个指定值中的一个。
你将不得不攻击这个问题的一些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暂时关闭。这是因为您正在更改工作表上的值,并且希望避免发起另一个尝试让例程自行完成的事件。
你需要VBA(脚本)来做那样的事情。一个单元格包含未经过进一步处理的明文数据或公式,而不是同时进行,除非您有脚本正在运行以执行任何处理。 – Jerry
谢谢,我认为这会归结到这一点。你知道如何用VBA实现这一点吗? –
只是好奇,为什么? (例如,为什么不使用数据验证或VLOOKUP?) – pnuts