ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何用普通公式返回一行中第一个非空单元格?

如何用普通公式返回一行中第一个非空单元格?

作者:绿色风 分类: 时间:2022-08-17 浏览:275
楼主
悟空师弟
Q:如何用普通公式返回一行中第一个非空单元格?
如下图:

 

A:公式如下:
  1. =INDEX(B2:G2,MATCH("?*",B2:G2,))

如何用普通公式返回一行中第一个非空单元格?.rar


解题思路
    利用通配符?和*号的特性进行组合,再结合MATCH函数可以使用通配符的精确查找方式找到第一个非空单元格的位置,再用INDEX返回该行中对应位置的数据。

解题关键
    通配符“?”与“*”的使用。

公式解析
    公式:=INDEX(B2:G2,MATCH("?*",B2:G2,))
    以第2行为例:
1、“?”表示一个任意的字符,“*”表示任意多个任意字符(包括0个),组合后“?*”表示至少包含有一个字符。
2、MATCH("?*",B2:G2,) 查找第一个至少包含1个字符(即非空)的单元格的位置,结果为 【3】。
3、INDEX(B2:G2,MATCH("?*",B2:G2,)) 返回区域B2:G2中第3个单元格的数据,结果为 【KK2W】。

其他公式:
数组公式:
  1. =LOOKUP(1,0/(T(OFFSET(A2,,7-COLUMN(A:F)))<>""),T(OFFSET(A2,,7-COLUMN(A:F))))
  1. =IF(B2<>"",B2,IF(C2<>"",C2,IF(D2<>"",D2,IF(E2<>"",E2,IF(F2<>"",F2,G2)))))&""
  1. =INDEX(A2:G2,MIN(IF(B2:G2<>"",COLUMN(B:G))))
  1. =HLOOKUP(1,IF({1;0},--(B2:G2<>""),B2:G2),2,)
  1. =INDEX(2:2,MIN(IF(B2:G2<>"",COLUMN(B:G))))
  1. =INDEX(B2:G2,MATCH(1>0,B2:G2<>"",))
友情链接
关于通配符:[基础应用] Excel 的通配符有哪些?各有什么用处? http://www.exceltip.net/thread-326-1-1.html

关于MATCH函数: [函数与公式] MATCH动态图解 http://www.exceltip.net/thread-7144-1-1.html

关于INDEX函数:[函数与公式] INDEX动态图解 http://www.exceltip.net/thread-7142-1-1.html

关于INDEX+MATCH函数:[函数与公式] INDEX+MATCH函数介绍 http://www.exceltip.net/thread-12134-1-1.html
2楼
laowuwyx
版主,头两个公式是普通公式。
3楼
nicon
版主,您好,我正好有这样的需求,我试用了你提供的第一个公式,但总是返回#N/A的错误,我是新手,看了半天也没看出哪里有问题,麻烦帮我解答一下,谢谢!

刚下载了附件又看了一下,原来我自己的文件都是数字。而貌似公式针对的是文本,所以产生了错误。这个公式能够直接对数字使用吗?

不过最后一个数组公式可以解决我的问题,谢谢!
4楼
玄紫

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap