动态下拉列表之高级段位:智能匹配,精准打击,要的就是这种丝滑

人都一样,懒了还想懒。到了中级段位以后,还是不满足,一方面是因为名称管理器里装满了名称,显得有些杂乱;另一方面,这种方式设置下拉列表,还要翻到参数表去看OFFSET的坐标路线,尤其是向右行军的步数,总是显得不那么智能,也不够高大尚。怎么才能让函数充分发挥出它的智能作用呢?


切中要害,找出解决问题的关键

我们来思考下面两个问题:

  1. 能不能根据“工作表”中下拉列表所在列的字段名,让EXCEL自己去“参数表”去查向右行军的步数呢(当然工作表列所在字段名要与参数表中相应的字段名必须一致)?
  2. 如何让EXCEL自己抓取下拉列表所在列的字段名呢?

这两个问题如果都解决了,我们就解决了自动获取到上期公式OFFSET的第二个参数=OFFSET(参数表!$A$1,1,3,COUNTA(OFFSET(参数表!$A$1,1,3,20,1)),1),是不是一条公式就解决了所有下拉列表的设置了,而且名称管理器里只要存一个名称“下拉列表”就可以了。

下面我我们来介绍一个新兵出场!


众里寻她千百度,得来全不费功夫,特种侦察兵MATCH

【名 片】姓名MATCH,特种侦察兵。函数军事学院特种侦察系测绘专业毕业,擅长敌后渗透,寻踪觅迹,向后方输送相对位置坐标数据,战绩卓著,相当年与OFFSET/INDEX等配合,打了不少漂亮仗,立功无数。

【官方释义】MATCH(lookup_value, lookup_array, [match_type])

【坊间释义】MATCH(找谁?哪找?咋找?),MATCH 函数可在单元格区域中搜索指定项,然后返回该项在单元格区域中的相对位置。


解决第一个问题:假如知道了下拉列表所在列的字段名,如何得到OFFSET右行军的步数

  1. 假如我们已经知道,设置下拉列表所在列的字段名为“血型”,我们其实就可以派我们的特种侦察兵出场了,战术动作分解为MATCH(找“血型”,在参数表第一行A1:Z1中找,精确匹配),即:MATCH(“血型”,参数表!$A$1:$Z$1,0)
  2. 由于MATCH是在A1:Z1这个区域内返回“血型”的相对位置,它是从A1开始计数的,找到“血型”正好是4;而OFFSET右行军虽然从第一列开始,但它是以跨步计数的,第3步就到了。所以由于计数方式不一样,尽管从同一列出发, MATCH返回的相对坐标数比OFFSET的行军步数多了1,所以只有减掉1,才能二者一致,也就是说MATCH(“血型”,参数表!$A$1:$Z$1,0)-1就是OFFSET右行军的步数。


解决第二个问题:如何让EXCEL自己抓取下拉列表所在列的字段名呢?

假如我们在工作表的G列设置下拉列表,那么G列的第一行就是字段名;如果在H列设置下拉列表,那么字段名就在H列的第一行。也就是说字段名所在单元格行坐标为1,列坐标为COLUMN()(它是动的,在哪里设下拉列表,他就能求出那个单元格所在的列),字段名所在的单元格名称为ADDRESS(1,COLUMN()),我们再用INDIRECT函数引用一下这个单元格名称,也就得到了单元格里的内容,即字段名称。


战果汇总:合并所有公式存入名称,并设置下拉列表


成果展示:要的就是这种丝滑


如此这般,名称管理器里不再是满满名称,针对单级下拉列表,一条就够了,是不是够爽。先找到解决问题的步骤,再去配置函数,最终的公式可能挺吓人,但分解一下再来看,不过尔尔。

展开阅读全文

页面更新:2024-04-29

标签:侦察兵   列表   段位   精准   坐标   公式   函数   血型   特种   名称   参数   高级   参数表   智能   动态

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top