2026年微软更新了两个重要工作表函数,主要用于导入文本文件数据的。先来看看IMPORTTEXT函数的语法,这个函数从出生到现在经过了两次更新,从6个参数更新到现在的7个参数。IMPORTTEXT(路径,[分隔符],[跳过行数],[返回行数],[编码],[数据导入格式解析方式],[区域设置])
第一参数 路径:为本地文本文件地址或者URL网页地址。摊手!也就意味着这个函数还可以做网爬呀!
第二参数 分隔符:文件列字段的分割符号或字符串,默认为TAB(制表符)
第三参数 跳过行数:一个数字,指定读取数据时要跳过的行数,负值表示跳过数组末尾的行数。
第四参数 返回行数:一个数字,指定要返回的行数,负值表示返回数组末尾的行数。
第五参数 编码:文件编码,默认情况下,使用UTF-8,数据库导出的txt文件一般为GBK编码
第六参数 数据导入格式解析方式:按照检测数据类型导入或者按照纯文本导入。若为0,则开启自动数据类型检测,Excel 会尝试将数字转数值、日期转日期格式;若为1,则把所有列按照文本导入,比如有时候咱们避免身份证号变成科学计数法的形式。
第七参数 区域设置:确定区域格式(例如日期\数字格式)。默认情况下使用系统区域设置
比如中国zh-CN:日期优先识别yyyy-mm-dd/yyyy/m/d;小数点为英文.,千位分隔符为。而美国en-US:美式日期m/d/yyyy
好啦,基础语法就介绍完了,咱们看看几个例子。
比如,我有个文档1,路径:
"D:\Excel\Excel365新函数权威指南\课时67:IMPORTTEXT函数\文档\文档1.txt"
我想提取这个文档中的数据。
=IMPORTTEXT("D:\Excel\Excel365新函数权威指南\课时67:IMPORTTEXT函数\文档\文档1.txt")
当然,我们还可以只提取前6行数据
=IMPORTTEXT("D:\Excel\Excel365新函数权威指南\课时67:IMPORTTEXT函数\文档\文档1.txt", , , 6 )
提取最后6行的记录
=IMPORTTEXT("D:\Excel\Excel365新函数权威指南\课时67:IMPORTTEXT函数\文档\文档1.txt", , , -6 )
下面升级难度,咱们抓取网页上的表格数据
网址:https://www.boc.cn/sourcedb/whpj/index_1.html
我们要抓取这个网页上的表格外汇牌价数据
=LET(_r1,TOCOL(IMPORTTEXT("https://www.boc.cn/sourcedb/whpj/index_1.html"),3),DROP(WRAPROWS(TOCOL(REDUCE({"货币名称","现汇买入价","现钞买入价","现汇卖出价","现钞卖出价","中行折算价","发布日期","发布时间"},SEQUENCE(COUNTA(_r1)),LAMBDA(_p,_v,IF(ISNUMBER(FIND("currency=",INDEX(_r1,_v))),VSTACK(_p,HSTACK(REGEXEXTRACT(INDEX(_r1,_v),"(?<=').*?(?=')"),TAKE(TEXTSPLIT(SUBSTITUTE(TEXTJOIN("&",1,REGEXEXTRACT(CONCAT(TAKE(DROP(_r1,_v-1),30)),"(?<=>).*?(?=<)",1))," ",),"&",,1),,7))),_p))),2),8),1))
这只是单个网页的表格数据爬取,如果是多网页呢?
----------------我们可以加入递归函数遍历所有网页链接来解决!
后续我们分享用这个函数合并同一文件夹多文本文件数据的时候再讲怎么用递归函数(和VBA无关哦!)
下面是一个IMPORTCSV函数的简单用法!
IMPORTCSV函数是IMPORTTEXT函数的简化版本,相当于使用了分隔符为,和编码为UTF-8的IMPORTTEXT函数。
下面是一个txt文档内容,列字段以逗号,隔开
=IMPORTCSV("D:\Excel\Excel365新函数权威指南\课时67:IMPORTTEXT函数\文本文档.txt")