章作者:小龙
来自公众号:产品原型工匠
< class="pgc-img">>< class="pgc-img">>可通过变形实现,让顶部菜单更加丰富
< class="pgc-img">>< class="pgc-img">>< class="pgc-img">>1、拉取一个矩形,大小为宽375,高60,位置是X:0,Y:202、一个向左图标大小默认,位置X:26,Y:383、一个向右图标大小默认,位置同向左图标,隐藏掉
< class="pgc-img">>< class="pgc-img">>1、先拉取一个全局手势2、添加状态23、隐藏向左,显示向右4、矩形设定圆角100,大小为宽60,高60,位置改为X:8,Y:20
< class="pgc-img">>< class="pgc-img">>1、默认状态的全局手势链接到状态22、状态2的全局手势链接到默认状态3、大功告成
< class="pgc-img">>< class="pgc-img">>< class="pgc-img">>< class="pgc-img">>https://pro.modao.cc/app/Q7iWmMXRsRbtt0PwmQWp8Mw3EsWY1Mp
< class="pgc-img">>原型项目链接:https://modao.cc/app/Q7iWmMXRsRbtt0PwmQWp8Mw3EsWY1Mp
>天的内容来介绍一个功能强大、能极大提升你excel功力的Offset()函数。
(如果你看到的是微头条,请点击文章开始处的“查看原文”,以完整阅读)
Offset以指定的引用为参照系,通过给定偏移量返回新的引用。
语法:=OFFSET(reference, rows, cols, [height], [width])
通俗说就是=OFFSET(参考单元格区域,偏移的行数,偏移的列数, [新引用行数], [新引用列数])。
reference 必须,可为单个单元格引用,也可以是一个连续的单元格区域引用(不连续的将返回错误)。
rows 必须,以参考单元格区域的左上角的那个单元格作起点,向上或向下偏移的行数,正数为向下,零不偏移,负数为向上偏移。偏移超出工作表边缘,将返回错误代码值#REF!。
cols 必须,以参考单元格区域的左上角的那个单元格作起点,向右或向左偏移的行数,正数为向右,零不偏移,负数为向左偏移。偏移超出工作表边缘,将返回错误代码值#REF!。
height 可选,需要返回的新引用的行数,必须为非零的数,否则返回#REF!错误,正数时为向下引用的行数,负数时为向上引用的行数,如果省略,则新引用区域和参考单元格区域行数相同。
width 可选,需要返回的新引用的列数,必须为非零的数,否则返回#REF!错误,正数时为向右引用的列数,负数时为向左引用的列数,如果省略,则新引用区域和参考单元格区域列数相同。
接下来先看几个最基本的演示,帮助大家理解。下图是一张标记有几个区域的数据表格。
< class="pgc-img">>现在根据offset公式的引用规则,大家推测一下新引用区域会是哪里!
公式一:=OFFSET(B18,2,3)
公式二:=OFFSET(C6:E10,4,5,3,4)
公式三:=OFFSET(J19:L22,-4,3,,3)
公式四:=OFFSET(Q27:S32,-2,-3,-3,-2)
来看下大家推测对了没有,有底色的为新引用区域。
< class="pgc-img">>接着来介绍几个常用实例:
实例一、动态汇总最总近七天的销售总额。
之前在介绍Index函数的使用方法的时候介绍过通过Index函数实现类似的功能,在excel中,解决一个问题通常都会不止一种方法,这也体现了excel的强大。今天我们就通过offset来解决这个问题。公式编辑如下:
=IFERROR(SUM(OFFSET($A,COUNTA(A:A)-7,1,7,1)),SUM($B:$B))
< class="pgc-img">>公式分析:首先OFFSET($A,COUNTA(A:A)-7,1,7,1)这部分公式,将单元格A1通过函数offset向下偏移COUNTA(A:A)-7行,COUNTA(A:A)统计的是整个A列中的非空单元格的个数,因为表格数据是根据日期的增加而动态引用最后七天数据,所以统计的时候需要引用整个A列或足够天数增加的行数。
COUNTA(A:A)-7就是偏移到非空的倒数第七这个单元格的位置,也即单元格A15,然后要汇总的是销售额,所以相对A1单元格偏移的是一列,而要汇总的是最近七天的数据,所以行数要扩展为七行,列扩展为一列。所以offset的第三、四、五参数分别为1,7,1。得到相应求和区域后,直接通过Sum函数求和,即得结果。
而公式的后面部分SUM($B:$B),则是因为如果总销售天数还不足七天的时候,公式前部分SUM(OFFSET($A,COUNTA(A:A)-7,1,7,1))会导致引用出错,这个时候只需要用IFERROR函数在出错时直接按七天算总额即可,因为不足七天的部分为0,不影响计算结果。
实例二、excel里查找引用是很常用的操作,方法也很多,今天介绍的Offset函数同样能实现,我们来看下面的实例。根据表中月份,对应查找电视、冰箱、洗衣机的销量。公式编辑如下:B20=OFFSET($A,MATCH($A,$A:$A,0)+1,COLUMN(A1)),在单元格B20输入公式,向右拖动到D20即可。
< class="pgc-img">>公式思路比较简单,不再细说,大家自行研究一下即可。
实例三、动态多级下拉菜单制作。
单元格下拉菜单的设置很多经常使用excel的朋友都会有这个需求,它能够对数据的规范和统一起到极大帮助。而今天介绍的offset刚好就能胜任这个工作。下面的表,A1列为城市名称,而B列以后的列为前面城市的各区县名称,要求根据给定的城市的名称和区县名称,设置动态下拉菜单,在需要输入城市名称的单元格直接可以在下拉菜单选择需要的城市名称,并且根据城市的不断增加,下拉菜单里也相应增加;而对照城市名称输入县、区名称的单元格同样设置动态下拉菜果,根据不同的城市名称,生成对应区县的名称下拉菜单。先来看实例效果。
< class="pgc-img">>接下来看操作步骤和公式分析:(重新选择一级下拉菜单时,二级自动变空的功能是通过vba实现的,这里不作介绍)
< class="pgc-img">>在excel里给单元格设置下拉菜单是通过数据验证命令里的序列来选项来实现的。其中一级下拉菜单的公式为=OFFSET($A,0,0,COUNTA(A:A),1),这个公式比较简单,能看到这里的朋友应该已经能理解了,不再说,只是要注意公式中的第一参数$A里的两个美元符号不能省,等后期讲单元格引用方式的时候大家就容易理解了。
二级下拉菜单的公式为=OFFSET($A,MATCH(D15,A:A,0)-1,1,1,COUNTA(OFFSET($A,MATCH(D15,A:A,0)-1,1,1,100))),公式的结果为一级下拉菜单选择的城市名在给定的城市和区、县信息表格中的城市名后的所有区、县的单元格区域。
其中MATCH(D15,A:A,0)用来查询已选择的城市名在A列中的序号位置,而OFFSET($A,MATCH(D15,A:A,0)-1,1,1,100)表示A列城市名称后的横向100个单元格区域,这里之所以选择100,是考虑全国所有城市中的区县数量不会超过100个,COUNTA(OFFSET($A,MATCH(D15,A:A,0)-1,1,1,100))表示对这100个单元格区域进行统计非空的单元格个数,也就是实际的区县个数。
如果想设置更多级的下拉菜单功能,参照二级的方法。
今天的内容就介绍到这里,如果对你有那么一点帮助,请给个关注+点赞,以表对我的鼓励!
>接着我们选择需要添加下拉菜单的所有单元格,选好后进入「数据」-「数据工具」-「数据验证」,在弹出的「数据验证」下面的「允许」中我们选择「序列」,在来源中输入公式「=OFFSET($A$1,MATCH(C2&"*",A:A,0)-1,,COUNTIF(A:A,C2&"*"),1)」。再选择「出错警告」,将「输入无效数据时显示出错警告」前面的勾取消掉,确定即可。