如何从Excel的JSON列中提取对应ValueName的fig值至指定列
嘿,我来帮你搞定这个Excel里提取JSON字段的需求!针对你这种大型Excel文件,这里有两种实用方法,适配不同的Excel版本:
方法1:Excel 365/2021原生JSON函数(推荐,高效稳定)
如果你的Excel是365或2021版本,直接用原生函数就能搞定,不用写代码,处理大型文件也很顺畅。
假设你的JSON数据在A列,Type1对应的列是B列,Type2对应的列是C列:
- 在B2单元格输入公式:
=XLOOKUP("Type1",TOCOL(JSONVALUE(A2),2)[@ValueName],TOCOL(JSONVALUE(A2),2)[@fig]) - 在C2单元格输入公式:
=XLOOKUP("Type2",TOCOL(JSONVALUE(A2),2)[@ValueName],TOCOL(JSONVALUE(A2),2)[@fig]) - 选中B2和C2,下拉填充到所有行即可。
公式解释:
JSONVALUE(A2):把单元格里的JSON字符串转换成Excel可识别的对象TOCOL(JSONVALUE(A2),2):把JSON对象里的所有子对象(也就是wrtieSeg和readSeg的内容)转成一列数组XLOOKUP(...):匹配数组中ValueName为目标值(Type1/Type2)的项,返回对应的fig字段值
方法2:VBA宏(适配旧版Excel,灵活可控)
如果你的Excel版本比较旧(比如2019及以前),不支持原生JSON函数,那就用VBA宏来处理,批量提取效率也很高。
操作步骤:
- 按
Alt + F11打开VBA编辑器 - 右键点击左侧的工作簿名称 → 插入 → 模块
- 把下面的代码粘贴到模块窗口里:
Function GetFigFromJSON(jsonStr As String, targetType As String) As String ' 用JScript引擎解析JSON Dim sc As Object Set sc = CreateObject("MSScriptControl.ScriptControl") sc.Language = "JScript" ' 定义JS函数来提取目标fig值 sc.AddCode "function extractFig(json, target) { " & _ "var obj = JSON.parse(json); " & _ "for(var key in obj) { " & _ "if(obj[key].ValueName === target) return obj[key].fig; " & _ "} return ''; }" ' 调用JS函数并返回结果 GetFigFromJSON = sc.Run("extractFig", jsonStr, targetType) End Function - 关闭VBA编辑器,回到Excel界面
使用宏函数:
- 在B2单元格输入:
=GetFigFromJSON(A2,"Type1") - 在C2单元格输入:
=GetFigFromJSON(A2,"Type2") - 下拉填充到所有行即可
注意事项:
- 如果你的JSON字符串有多余的空格或特殊字符,可以先用
CLEAN函数预处理,比如=GetFigFromJSON(CLEAN(A2),"Type1") - 确保单元格里的JSON格式是正确的(引号配对、逗号分隔正确),不然会解析失败
内容的提问来源于stack exchange,提问作者Roy1245
相关产品推荐
相关产品推荐

