现在我们来讲一讲动态数据有效性的第二种方法,需要offset函数。
所以先来看offset函数如何使用。
1offset语法
offset函数可以从基点出发,偏移一定的距离,返回一片区域;我们可以用这片区域作为数据有效性的数据源。
offset(基点,偏移行,偏移列,返回行数,返回列数)
我们来讲解一下这5个参数:
1、基点:也就是起始位置,可以是一个单元格,也可以是一片区域。
2、偏移行:正数向下偏移,负数向上偏移。
3、偏移列:正数向右偏移,负数向左偏移。
4、返回行数:偏移到指定位置,返回的区域有多少行。
5、返回列数:偏移到指定位置,返回的区域有多少行。
比如:offset(A1,3,1,3,4):A1先向下偏移3行,再向右偏移1列,到达B3。返回的区域是从B3开始返回3行4列,也就是黄色区域了。

offset还有很多用法,比如参数4和参数5可以省略。我们以后再详细讲,下面我们来看如何设置动态数据有效性。
2动态数据有效性
1、先在A列输入数据有效性源数据;
2、在需要设置有效性的单元格,打开数据有效性对话框;
3、允许“序列”,来源:=offset($A$1, 1, 0, counta($A:$A)-1, 1)

动态数据有效性设置完毕,我们在A4输入不确定,可以看到下拉列表里面包含了“不确定”。
3详解
我们来讲一下是什么原理,由于涉及到公式的组合,还是稍微难以理解的。
offset($A$1, 1, 0, counta($A:$A)-1, 1)
1、基点是A1,为什么锁定呢,因为不锁定的话,offset公式也会随着目标单元格变化而变化的。
2、参数2表示A1往下偏移1行,到达A2。
3、参数3为0,表示在列方向不偏移,还是A2。
4、参数4为counta($A:$A)-1。counta我们讲过,只要单元格不为空,就统计上。
目前A1到A3是有值的,counta($A:$A)-1也就是2。所以表示offset返回2行,A2:A3。
5、参数5是1,表示返回1列。返回A2:A3。
如果我们在A4输入值,counta($A:$A)就会统计A4,变成4;counta($A:$A)-1也就是3,所以表示offset返回3行,A2:A4。
这个大家亲自操作试试,第一次的话会遇到很多问题呢。
如果一次操作成功,那么恭喜你了,天赋异禀,维护宇宙和平就靠你了!
所以先来看offset函数如何使用。
1offset语法
offset函数可以从基点出发,偏移一定的距离,返回一片区域;我们可以用这片区域作为数据有效性的数据源。
offset(基点,偏移行,偏移列,返回行数,返回列数)
我们来讲解一下这5个参数:
1、基点:也就是起始位置,可以是一个单元格,也可以是一片区域。
2、偏移行:正数向下偏移,负数向上偏移。
3、偏移列:正数向右偏移,负数向左偏移。
4、返回行数:偏移到指定位置,返回的区域有多少行。
5、返回列数:偏移到指定位置,返回的区域有多少行。
比如:offset(A1,3,1,3,4):A1先向下偏移3行,再向右偏移1列,到达B3。返回的区域是从B3开始返回3行4列,也就是黄色区域了。

offset还有很多用法,比如参数4和参数5可以省略。我们以后再详细讲,下面我们来看如何设置动态数据有效性。
2动态数据有效性
1、先在A列输入数据有效性源数据;
2、在需要设置有效性的单元格,打开数据有效性对话框;
3、允许“序列”,来源:=offset($A$1, 1, 0, counta($A:$A)-1, 1)

动态数据有效性设置完毕,我们在A4输入不确定,可以看到下拉列表里面包含了“不确定”。
3详解
我们来讲一下是什么原理,由于涉及到公式的组合,还是稍微难以理解的。
offset($A$1, 1, 0, counta($A:$A)-1, 1)
1、基点是A1,为什么锁定呢,因为不锁定的话,offset公式也会随着目标单元格变化而变化的。
2、参数2表示A1往下偏移1行,到达A2。
3、参数3为0,表示在列方向不偏移,还是A2。
4、参数4为counta($A:$A)-1。counta我们讲过,只要单元格不为空,就统计上。
目前A1到A3是有值的,counta($A:$A)-1也就是2。所以表示offset返回2行,A2:A3。
5、参数5是1,表示返回1列。返回A2:A3。
如果我们在A4输入值,counta($A:$A)就会统计A4,变成4;counta($A:$A)-1也就是3,所以表示offset返回3行,A2:A4。
这个大家亲自操作试试,第一次的话会遇到很多问题呢。
如果一次操作成功,那么恭喜你了,天赋异禀,维护宇宙和平就靠你了!