excel二十多年前的XLM宏函数还有用吗

是XLM,不是流行的XML!
XLM宏函数非常“古老”,据说是Excel 5之前用于编程控制Excel的“语言”,数百个XLM宏函数提供了Excel的几乎全部功能 。
但是,自从在Excel 5中引入更易学习且更强大的VBA后,XLM宏函数被VBA所取代,成为编程控制Excel的主要语言 。
然而,XLM宏函数仍然能够在迄今为止的所有Excel版本中使用,并且有些功能似乎还必须要借助于XLM宏函数 。由于XLM宏函数出现在Excel 5之前,因此有时也称之为Excel 4 XLM宏函数 。
下面举几个使用XLM宏函数的例子 。
在命名公式中使用XLM宏函数
在将公式定义为名称时,可以在公式中使用XLM函数,这可以实现通常要使用VBA才能实现的功能 。注意,通常的工作表公式中不能使用XLM函数 。
示例1:列出指定目录下的文件
在工作簿中创建命名公式 。
单击“公式”选项卡“定义名称”命令,在“新建名称”对话框中输入以下内容:
名称:FileList
引用位置:=FILES(Sheet1!$A$1)
其中,FILES是一个XLM宏函数,可以指定一个带有文件说明的目录路径作为参数,用于返回该目录下符合文件说明的文件名组成的数组 。
在Sheet1的单元格A1中,输入目录路径和文件说明,在任意列(本例中为列C),从第1行开始,输入公式:
=INDEX(FileList,ROW())
然后下拉该单元格至公式值返回#REF!,此时表明文件夹中的文件已找完,如下图1所示 。

excel二十多年前的XLM宏函数还有用吗

文章插图
图1
现在,修改工作表Sheet1单元格A1中的值代表的文件夹,列C中的数据自动更新 。
示例2:读取单元格背景色
在工作簿中创建命名公式 。
单击“公式”选项卡“定义名称”命令,在“新建名称”对话框中输入以下内容:
名称:CellColor
引用位置:=GET.CELL(63,Sheet2!A1)+NOW()*0
其中,GET.CELL是一个XLM宏函数,可以获取关于单元格的各种信息,其中包括单元格背景填充色的索引值 。
注意,在“引用位置”框所输入的公式中,由于是相对当前单元格左侧的单元格,因此在定义名称时,选取工作表Sheet2单元格B1 。公式中的NOW()*0确保Excel每次重新计算时该名称公式也会重新计算 。
获取工作表Sheet2的列A中单元格背景色的公式如图2所示 。
excel二十多年前的XLM宏函数还有用吗

文章插图
图2
若数值单元格带有背景色,现在要汇总某背景色所在的单元格中的值,例如下图3所示的工作表,要计算橙色背景单元格的数值之和 。
excel二十多年前的XLM宏函数还有用吗

文章插图
图3
在列B中使用公式:=CellColor获取列A中相应单元格的背景色索引值,在单元格E1中输入想要求和的单元格背景色索引值,在单元格E3中输入公式:
=SUMIF(B1:B8,”=” & E1,A1:A8)
示例3:获取工作表名
3-1 在工作簿中创建命名公式,以获取工作簿中所有的工作表名 。
单击“公式”选项卡“定义名称”命令,在“新建名称”对话框中输入以下内容:
名称:AllSheets
引用位置:=GET.WORKBOOK(1+0*NOW())
该名称将获取工作簿中所有工作表名,即其值为工作簿中所有工作表名组成的数组 。如下图4所示,在工作表单元格B1中输入公式:
=INDEX(AllSheets,ROW())
下拉至出现#REF!值,表明已列出全部的工作表名 。
excel二十多年前的XLM宏函数还有用吗

文章插图
图4
3-2 在工作簿中创建命名公式,以获取当前单元格所在的工作表名 。
单击“公式”选项卡“定义名称”命令,在“新建名称”对话框中输入以下内容:

推荐阅读