Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Excel Formula Language SupportNew to Visual Studio Code? Get it now.
Excel Formula Language Support

Excel Formula Language Support

fengems

|
1 install
| (0) | Free
Comprehensive Excel formula editing support with syntax highlighting, IntelliSense, diagnostics, and more
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Excel Formula Language Support for VS Code

一个专为 Excel 公式编写设计的 VS Code 扩展,提供完整的语言支持和现代化开发体验。让复杂的 Excel 公式编写变得高效、可维护。

✨ 功能特性

🎉 完整实现(Phase 1 MVP - 100% 完成)

1. 文件类型支持

  • .formula - Excel 公式文件
  • .xlsxfx - Excel 扩展公式文件
  • 自动语法识别和高亮

2. 智能代码补全

  • 🔍 函数名智能补全 - 基于完整元数据库的25+核心函数
  • 📝 代码片段模板 - LET、LAMBDA、XLOOKUP、FILTER、IFS、SWITCH 等
  • 🎯 上下文感知 - 在合适位置自动触发补全
  • 📖 完整文档 - 函数说明、参数类型、使用示例
  • 🔗 单元格引用补全 - A1、A1:B10、A:A、1:1 等引用格式

3. 函数签名提示

  • ⚡ 实时参数提示 - 当前参数位置高亮显示
  • 🔄 嵌套函数支持 - 处理复杂的函数嵌套结构
  • 📋 参数文档 - 类型、描述、必需性、默认值
  • ✅ 必需/可选标识 - 清晰的参数要求展示

4. 语法诊断

  • 🚨 实时错误检测 - 语法错误、括号匹配、运算符验证
  • 🎯 函数验证 - 未知函数检测、参数数量检查
  • 📍 引用检查 - Excel 限制范围验证(A1:XFD1048576)
  • 🔧 智能建议 - 基于 Levenshtein 算法的拼写纠错
  • ⚙️ 特定规则 - LET 奇数参数、LAMBDA 最少参数等

5. 代码折叠

  • 📂 函数级别折叠 - LET、LAMBDA、IFS、SWITCH 等复杂函数
  • 📄 多行公式折叠 - 自动识别和折叠多行表达式
  • 🔗 嵌套支持 - 分层折叠复杂的嵌套结构
  • 🎚️ 智能条件 - 基于复杂度自适应折叠

6. 悬停提示

  • 📚 函数文档 - 完整的函数说明、参数列表、示例代码
  • 🔍 引用信息 - 单元格引用类型、范围大小、有效性检查
  • 🏷️ 变量追踪 - LET 变量定义位置和作用域
  • 💎 富文本支持 - Markdown 格式、代码高亮

7. 语义高亮

  • 🎨 函数分类着色 - 标准、现代、易变、定义类函数不同颜色
  • 📍 引用类型区分 - 相对、绝对、列、行引用可视化区分
  • 🏷️ 变量语义 - LET 变量声明/使用、LAMBDA 参数标识
  • ⚠️ 错误标记 - 无效引用、未知函数红色标记

8. 快速修复

  • 🔧 自动修复 - 常见语法错误(括号、等号、运算符)
  • 📝 函数纠错 - 智能函数名建议和替换
  • 🎯 参数修复 - 基于元数据的参数模板补全
  • 🔍 引用修复 - 单元格引用格式纠正
  • ⚡ 高级重构 - LET 提取、IF→IFS 转换、表达式简化

9. 代码格式化

  • 🎨 结构化布局 - LET 函数名值对分行、计算表达式独立
  • 📏 智能换行 - 80字符行宽控制、长参数自动换行
  • 📐 标准缩进 - 4空格缩进、正确的层次结构
  • ✨ 美化规则 - 函数名大写、运算符空格、逗号格式化

📋 支持的函数

🎯 核心函数(完整元数据支持 - 29个函数)

  • LET - 变量定义和计算,支持复杂作用域
  • LAMBDA - 自定义函数,参数追踪和验证
  • IF / IFS - 条件判断,智能参数提示
  • SWITCH - 多分支选择,支持多个值-结果对
  • INDEX - 数组索引查找,经典组合支持
  • XLOOKUP - 现代查找函数,错误处理模板
  • FILTER - 动态数组过滤,条件验证
  • PIVOTBY - 数据透视表(Excel 2024)
  • GROUPBY - 分组汇总(Excel 2024)

🆕 新增函数支持(16个)

  • ISOMITTED - LAMBDA 参数省略检测
  • DROP - 删除数组行/列
  • XMATCH - 高级查找位置
  • CHOOSECOLS - 选择指定列
  • TEXTSPLIT - 文本分割为数组
  • TAKE - 提取数组行/列
  • ISERROR - 错误值检测
  • HSTACK - 水平堆叠数组
  • VSTACK - 垂直堆叠数组
  • COLUMNS - 获取列数
  • N - 转换为数字
  • AGGREGATE - 高级聚合计算
  • TEXT - 数字格式化为文本
  • SUM - 求和计算
  • ROWS - 获取行数
  • UNIQUE - 获取唯一值

🆕 最新新增函数(3个)- 2025年1月2日

  • ISTEXT - 检测值是否为文本
  • BYROW - 对每行应用LAMBDA函数
  • AVERAGE - 计算算术平均值

🔍 语法元素

  • 单元格引用 - A1、$A$1、A1:B10、A:A、1:1
  • 数组常量 - {1,2,3}、{"a","b","c"}
  • 动态数组 - @、# 溢出符号
  • 运算符 - 算术、比较、文本连接
  • 字符串和数值 - 完整的字面量支持

使用方法

1. 安装扩展

目前处于开发阶段,需要手动安装:

# 克隆项目
git clone https://github.com/fengems/excel-Formula.git
cd excel-Formula

# 安装依赖并编译
yarn install
yarn compile

# 在 VS Code 中按 F5 启动调试

2. 创建公式文件

创建 .formula 或 .xlsxfx 文件,例如:

// test.formula
=LET(
    name, "John",
    age, 25,
    IF(age > 18,
        "Adult: " & name,
        "Minor: " & name
    )
)

3. 使用格式化

  • 通过命令面板:Excel Formula: Format Formula
  • 或使用快捷键格式化当前文档

💡 使用示例

LET 函数 - 变量定义和复杂计算

=LET(
    sales_data, A1:A100,
    target, 1000,
    actual_sales, SUM(sales_data),
    performance_ratio, actual_sales / target,
    status, IF(performance_ratio >= 1, "目标达成", "需要努力"),
    
    "销售额: " & actual_sales & 
    ", 完成率: " & ROUND(performance_ratio * 100, 1) & "%" &
    ", 状态: " & status
)

LAMBDA 自定义函数 - 可重用逻辑

=LAMBDA(data_range, condition_value,
    LET(
        filtered_data, FILTER(data_range, data_range > condition_value),
        summary_stats, {
            "总数: " & COUNTA(filtered_data),
            "平均值: " & ROUND(AVERAGE(filtered_data), 2),
            "最大值: " & MAX(filtered_data)
        },
        summary_stats
    )
)

XLOOKUP + FILTER 组合 - 现代查找和筛选

=LET(
    lookup_result, XLOOKUP(B2, employees[ID], employees[Department], "未找到"),
    department_data, FILTER(
        sales_data, 
        sales_data[Department] = lookup_result
    ),
    summary, IF(ISERROR(department_data), 
        "部门 " & lookup_result & " 无销售数据",
        "部门 " & lookup_result & " 总销售额: " & SUM(department_data[Amount])
    ),
    summary
)

复杂 IFS 条件判断

=LET(
    score, B2,
    grade, IFS(
        score >= 90, "A",
        score >= 80, "B", 
        score >= 70, "C",
        score >= 60, "D",
        TRUE, "F"
    ),
    comment, SWITCH(grade,
        "A", "优秀!",
        "B", "良好",
        "C", "中等",
        "D", "及格",
        "F", "需要改进"
    ),
    grade & " - " & comment
)

🎯 核心功能演示

智能代码补全

  • 输入 =L → 自动提示 LET 函数
  • 选择后自动生成结构化模板
  • Tab 键在参数间快速导航

实时错误检查

  • 括号不匹配 → 红色波浪线标记
  • 未知函数名 → 提供拼写建议
  • 参数数量错误 → 显示正确的参数要求

悬停查看文档

  • 悬停函数名 → 显示完整文档和示例
  • 悬停单元格引用 → 显示引用信息和有效性
  • 悬停 LET 变量 → 显示定义位置和值

一键格式化

  • 命令面板:Excel Formula: Format Formula
  • 自动格式化为结构化、易读的布局
  • 支持 LET 函数专用格式化

🔧 配置说明

支持的文件扩展名

  • .formula - 标准 Excel 公式文件
  • .xlsxfx - Excel 扩展公式文件

格式化设置

  • 行宽限制: 80 字符
  • 缩进方式: 4 个空格
  • 函数名: 自动转换为大写
  • 运算符: 前后添加空格
  • 逗号: 后面添加空格,长参数列表自动换行

📊 项目状态

🎉 Phase 1 MVP - 100% 完成!

所有核心语言服务功能已完全实现,提供专业级的 Excel 公式开发体验。

下一阶段规划

  1. 📖 文档完善和发布准备 - 当前优先级
  2. ⚡ 性能优化 - 大文件支持、响应速度提升
  3. 🚀 高级功能 - 变量重命名、跳转定义、重构支持

详细进度请查看 PROGRESS.md

🏗️ 技术架构

已实现架构

  • 语言支持: 完整的 VS Code Language Provider 架构
  • 元数据系统: JSON 格式的函数定义库
  • 智能解析: 自定义 Excel 公式解析算法
  • 零依赖: Yarn PnP 模式,无需 node_modules
  • TypeScript: 严格模式,类型安全

技术栈

  • TypeScript 4.9.4 + VS Code API 1.74.0
  • TextMate Grammar - 语法高亮
  • Language Providers - 补全、诊断、悬停等
  • 自定义解析器 - Excel 公式特定的语法分析

🧪 测试和验证

功能测试文件

test-completion.formula     # 代码补全功能测试
test-signature-help.formula # 函数签名提示测试
test-diagnostics.formula    # 语法诊断测试
test-folding.formula        # 代码折叠测试
test-hover.formula          # 悬停提示测试
test-semantic.formula       # 语义高亮测试
DEMO.formula               # 综合功能演示

运行测试

# 启动开发环境
yarn compile
# 在 VS Code 中按 F5,打开测试文件验证功能

🤝 贡献指南

开发环境设置

  1. Fork 本仓库
  2. 安装 Yarn 2.0+
  3. 运行 yarn install
  4. 在 VS Code 中按 F5 开始调试

贡献类型

  • 🐛 Bug 修复 - 功能问题、性能问题
  • ✨ 新功能 - 函数支持、语言特性
  • 📖 文档改进 - 使用指南、API 文档
  • 🧪 测试用例 - 边界情况、新功能测试

📝 许可证

MIT License - 详见 LICENSE 文件

🙏 致谢

  • Microsoft Excel 团队 - 优秀的公式系统设计
  • VS Code 团队 - 强大的扩展 API
  • TypeScript 团队 - 类型安全的开发体验

📞 联系我们

  • GitHub Issues - 问题反馈和功能请求
  • Discussion - 使用交流和开发讨论

让 Excel 公式编写变得高效、优雅! ✨

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft