Excel数据validation条件在另一个单元格值

这是上下文:

Sheet 1 : A1 = "50255" A2 = "Soccer players" A3 = The cell I'm having a problem with Sheet 2 : A1:A5 : List of soccer plays (Ronaldo, Zidane...) Sheet 3 : A lot of datas in which I can possibly find my Sheet1!A1 value 

我想能够做到这一点:

 If A1<>"" then Vlookup in Sheet 3 and print my value "50255". If A1="" then diplay the list of possible values you can set for Sheet2!Soccer players (Ronaldo, Zidane...) 

问题:我可以在两个不同的单元中做两件事,但我无法在一个单元中做我想做的事情…

总结一下:我想要得到我的Vlookup的结果或者(如果是空的话)可能值的列表。

我在数据validation中试过的东西:

 =SI($E$31<>"";RECHERCHEV($E$31;'1 - Data players'!$G:$XFD;EQUIV('2 - OD'!$E38;'1 - Data players'!$G$6:$EX$6;0);FAUX);indirect($E$38)) 

英语Excel中的公式:

 =IF($E$31<>"",VLOOKUP($E$31,'1 - Data players'!$G:$XFD,MATCH('2 - OD'!$E38,'1 - Data players'!$G$6:$EX$6,0),FALSE),INDIRECT($E$38)) 

你可以帮帮我吗?

你可以把vlookup公式和validation放到同一个单元格中。 唯一的问题是,如果您使用下拉菜单设置值,则会覆盖该公式。 为了您的目的,您是否需要稍后回来的公式? 如果不是,那么下面的解决scheme可能是合适的。

请注意,要使用不同工作表中的validation,您需要首先将范围名称应用于值列表,然后在数据validation中引用范围名称。

我已经按照你的例子设置了3张表。 我已经将“Players”设置为包含玩家名称列表的Sheet2上A1:A3的范围名称。 然后我把一个vlookup公式放到A3中:

 =IFERROR(VLOOKUP(A1,Sheet3!$A$1:$B$3,2,0),"") 

式

然后使用List选项将数据validation添加到A3:

 =IF($A$1="",Players,"") 

数据验证

然后下拉菜单出现,如果我清除从A1的值:

落下

Worksheet_Change事件添加到第一个工作区(根据您的上下文),例如Sheet1 ,然后当目标单元格( A1 )发生更改时,您可以检查该值,然后

  • 使用Range("A3").Validation.Add...添加数据validation到Range("A3").Validation.Add... ,或

  • 用任何你需要的公式插入A3

下面的例子只是使用一个简单的列表和VLOOKUP范围,你可以适应你的情况:

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim blnChange As Boolean Dim strVlookupFormula As String On Error GoTo ExitFunction: 'vlookup if target is not empty strVlookupFormula = "=IFERROR(VLOOKUP($A$1,$E$2:$F$4,2,FALSE),""no match"")" 'was our cell changed blnChange = Not Application.Intersect(Target, Sheet1.Range("A1")) Is Nothing If blnChange Then 'disable events as we are going to update cells Application.EnableEvents = False 'is cell empty If IsEmpty(Target.Value) Then 'remove anything from cell Sheet1.Range("A3").ClearContents 'add data validation to cell With Sheet1.Range("A3").Validation .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="=Sheet1!C2:C5" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With Else 'remove any validation Sheet1.Range("A3").Validation.Delete 'add vlookup formula to cell Sheet1.Range("A3").Formula = strVlookupFormula End If End If ExitFunction: ' re-enable events Application.EnableEvents = True End Sub 

有关空A1值的数据validation示例:

在这里输入图像说明

带有非空A1值的公式示例:

在这里输入图像说明