excel中怎样在一个单元格中通过判断不同的条件而显示出不同的有效性序列呢?

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:14:54
我举个例子,我想达到这样的效果

比如

在sheet1中A1单元格的数据是事先用if函数已经设定好了的,有5种结果,在B1要分别根据这5种结果而显示出5种不同的数据序列,并且需要以数据有效性的方式显示出来,应该怎么做?

当A1满足某种条件时会提示打分区间为17-24分,这个时候需要在B1自动带出一列有效性序列,并且序列会显示24,23,22,21,20,19,18,17;

而当A1满足另外一个条件是会提示打分区间为10-16,这个时候又需要在B1自动带出一列有效性序列,并且序列会显示16,15,14,13,12,11,10。

应该怎么做呢?
定义名称,数据有效性引用的方法我试过了,可是只能在一个单元格实现一次,我想在一个单元格实现5次,因为我有5种不同的判断条件,满足一个判断条件就想在那个单元格显示一种有效性序列。

定义名称,数据有效性引用

在d1:h1分别输入那5种结果,把相应的序列输在每个结果下面→选a1→插入→名称→定义→名称框输一名称(如www)→点引用位置右边带红图标→选区域d1:h1→点带红图标→确定→选中d1:h8(根据情况调整数字8,即8是d-h列的最大数据行→插入→名称→指定→去掉最左列的勾→确定→选b1→进入数据有效性→选序列→来源框输入:=indirect(a1)→确定→若出现对话框点yes即可

要用VBA才行,按alt+F11进入,然后双击左边工作表名称,在右边复制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Row = 1 And Target.Count = 1 Then
With Range("B1").Validation
If Range("A1") >= 17 And Range("A1") <= 24 Then
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="24,23,22,21,20,19,18,17"
ElseIf Range("A1") >= 10 And Range("A1") <= 16 Then
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="16,15,14,13,12,11,10"