VB。 如何在excel中search列,并返回“确定”,或给我两个选项,如果列中包含特定的文本

我是一个VB的noob的技巧。 我有一个电子表格,我试图引用列H,如果H等于这些值中的任何一个,则将文本“NPC”或“Stone”返回到列J中。 如果列H等于“Ad-hoc”,我希望能够select“NPC”或“Stone”并将该值返回到列J中。

希望这是有道理的,有人可以帮忙。

不幸的是我不能发表这个图像。

考虑:

Sub dural() For Each r In Intersect(ActiveSheet.UsedRange, Range("H:H")) v = r.Value If v = "NPC" Or v = "Stone" Then r.Offset(0, 2) = "OK" If v = "Ad-hoc" Then r.Offset(0, 2) = Application.InputBox(Prompt:="Enter value", Type:=2) Next r End Sub 

我采用了一种函数方法:

  Function npc_or_stone(s As String) As String Select Case s Case "NPC", "Stone" npc_or_stone = s Case "Ad-hoc" If msg_yes_no("do you want to set it to npc?") Then npc_or_stone = "NPC" Else npc_or_stone = "Stone" End If End Select End Function Function msg_yes_no(s As String) As Boolean msg_yes_no = (MsgBox(s, vbYesNo) = vbYes) End Function 

所有你需要做的就是将这个代码添加到工作簿的模块,然后,假设有一个标题行,你可以在J2中input下面的公式:

  =npc_or_stone(H2) 

然后填写公式。 当你这样做的时候,当遇到“Ad-hoc”的时候,它会询问你想要设置什么。 从那以后,如果将H列中的值更改为“Ad-hoc”,它只会再次问你。

希望这有助于〜