EXCEL单元格三项检测标准:是否为公式、主函数识别、动态数组溢出风险判定
- 2026-11-08 03:43:01
一、判断单元格是常量还是公式
例:B列中使用FORMULATEXT函数,提取单元格中的公式文本,对无公式单元格返回 #N/A。

判断单元格(A列)是否为公式:
C2=IF(IFERROR(FORMULATEXT(A2),"")="","常量值","公式")
分解公式:
(1)IFERROR(FORMULATEXT(A2),"")
FORMULATEXT(A1):尝试取出 A2 单元格的公式字符串
IFERROR(..., ""):报错就替换为空文本""
(2)IF( 上一步结果="", "常量值", "公式")
上一步结果 = 空 → A2 没有公式 → 输出常量值
上一步结果 ≠ 空 → A2 存在公式 → 输出公式
二、取出函数名称
例:取A2单元格公式名称
=IF(C2="公式",LEFT(SUBSTITUTE(FORMULATEXT(A2),"=",""),FIND("(",SUBSTITUTE(FORMULATEXT(A2),"=",""))-1),"—")
分解公式:
(1)FORMULATEXT(A2),取出公式文本:=sum(D2:E2)
(2) SUBSTITUTE(FORMULATEXT(A2),"=",""),去掉等号
(3) FIND("(",SUBSTITUTE(FORMULATEXT(A2),"=","")),查出左括号的位置
(4)FIND("(",SUBSTITUTE(FORMULATEXT(A2),"=",""))-1,得出函数名取后一个字符的位置
(5)LEFT( 去掉等号后的文本 , FIND结果-1 ):得出函数名称

三、检查公式是否包含动态数组函数
FILTER / UNIQUE / SORT / LET / LAMBDA 都是 Microsoft 365 / Excel2021 才有的动态数组函数,这类公式会溢出(Spill),把结果填充到下方 / 右侧相邻单元格,溢出区域如果被别的内容挡住,就会报 #SPILL! 溢出错误。
判断A2单元格是否包含动态数组
=IF(C2="公式",IF(SUMPRODUCT(--ISNUMBER(SEARCH({"FILTER","UNIQUE","SORT","LET","LAMBDA"},FORMULATEXT(A2))))>0,"⚠ 溢出风险","✅ 正常"),"—")
结果:正常

公式分解:
