VLOOKUP函数妙手点睛解难题,瞬间我觉得海鲜也不香了!

文摘   教育   2024-09-14 20:00   上海  




欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路





小伙伴们好,今天来和大家分享一道文本题目。通过这道题目,再次和大家复习一下FILTERXML函数第二参数中条件设置的技巧。

 

题目是这样子的:





按题目要求,将A列中的卡号信息、消费日期和金额分别列在3列中。今天这道题目,向大家介绍3种方法来提取数值。



01

VLOOKUP函数法

 

我们观察一下源数据,它们的排列是有规律的。





在单元格D10中输入下列公式,三键回车并向下向右拖曳即可。

=TRIM(VLOOKUP(" *",RIGHTB(INDEX($A$2:$A$19,(ROW(A1)-1)*3+COLUMN(A1)),ROW($1:$20)),1,))


下面我们一起看看这条公式的详细解析。


(ROW(A1)-1)*3+COLUMN(A1)

源数据是3行一组,因此这部分确保能够提取到正确的数据类型。


例如当前单元格在D10时,(ROW(A1)-1)*3+COLUMN(A1)的值是1,INDEX函数返回卡号那行的信息;当向下拖曳公式到第11行时,(ROW(A2)-1)*3+COLUMN(A1)的值是4,同样也返回卡号信息。


RIGHTB(INDEX($A$2:$A$19,(ROW(A1)-1)*3+COLUMN(A1)),ROW($1:$20))

利用RIGHTB函数,从右向左依次提取长度为1、2、3..20个字节的字符串。


VLOOKUP(" *",RIGHTB(INDEX($A$2:$A$19,(ROW(A1)-1)*3+COLUMN(A1)),ROW($1:$20)),1,)

由于源数据中的分隔符“:”是全角字符,是2个字节长度,因此上面RIGHTB函数提取的结果中肯定会有“ ”+字符串这样结构的字符串,因此可以利用VLOOKUP函数可以使用通配符的特点,查找以空格为开头的字符串。


TRIM(VLOOKUP(" *",RIGHTB(INDEX($A$2:$A$19,(ROW(A1)-1)*3+COLUMN(A1)),ROW($1:$20)),1,))

找到后去除多余的空格,就是本题的答案了。


02

海鲜大法

 

使用海鲜大法时我们需要添加一列辅助列。在单元格区域B2:B18中事先输入“:”。





在单元格D10中输入下列公式,三键回车并向下向右拖曳即可。

=FILTERXML("<a><b>"&SUBSTITUTE(PHONETIC($A$2:$B$19),":","</b><b>")&"</b></a>","a/b["&2*((ROW(A1)-1)*3+COLUMN()-3)&"]")


接单介绍一下这条公式。


PHONETIC($A$2:$B$19)

PHONETIC函数这部分,是把源数据和辅助列中的“:”合并在一起,生成一个以“:”作为所有数据的分隔符的新的源数据。


SUBSTITUTE(PHONETIC($A$2:$B$19),":","</b><b>")

利用SUBSTITUTE函数将“:”替换为“</b><b>”。


FILTERXML("<a><b>"&SUBSTITUTE(PHONETIC($A$2:$B$19),":","</b><b>")&"</b></a>","a/b["&2*((ROW(A1)-1)*3+COLUMN()-3)&"]")

在左右两端分别添加“<a><b>”和“</b></a>”,以满足FILTERXML函数对数据格式的要求。


在FILTERXML函数的第二参数中如下输入:"a/b["&2*((ROW(A1)-1)*3+COLUMN()-3)&"]",它的作用和上面那个例子中(ROW(A1)-1)*3+COLUMN(A1)是相同的。



03

高版本函数


最后,如果你能使用高版本函数,那么这道题目可以这样写。






本期内容练习文件提取方式:

链接:https://pan.baidu.com/s/1NSrwmIMz8lxW71o9k_4k3Q?pwd=vl5e

提取码:vl5e




好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!


-END-


长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助


我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章