是否有 Google Sheets 或 MS Excel 公式将具有 JSON 数组的列转换为多行
Is there a Google Sheets or MS Excel formula to convert a column with JSON array to multiple rows
我正在尝试解析 Excel 文件中包含 JSON 数组数据的列。我想将该 JSON 数组转换为多行。
我试过将文本拆分到列中,但结果不一致。
输入:
预期输出:
你可以在这个Googlesheet
中找到我的输入和expected_outputsheet
https://docs.google.com/spreadsheets/d/1zohaZXEoppbn4GBq-BLEFHk5n4PPwYPOTnbZbq6YbNs/edit?usp=sharing
有很多方法,其中之一是:
=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(C2:C, ","))<>"", "♦"&A2:A&"♠"&B2:B&"♠"&
REGEXEXTRACT(SPLIT(SUBSTITUTE(C2:C, """", ), ","), ":(\d+)"), ))
,,999^99)),,999^99)), "♦")), "♠"))
=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(LEN(A2), "♦"&A2&"♠"&B2&QUERY(TRANSPOSE("♠"&QUERY(REGEXEXTRACT(SPLIT(
TRANSPOSE(SPLIT(SUBSTITUTE(C2, """", ), "{")), ","), ":(\d+)"), "offset 1", 0))
,,999^99), )),,999^99)),,999^99)), "♦")), "♠"))
有人可以采用我项目中的代码。
json 是一种棘手的格式,它使用不同的数据类型并且还可能包含嵌套项:
{ key: { key1: "a", key2: "b" } }
这就是使用 google-apps-script 完成任务的原因。
请copy示例文件:
或在此处查看源代码:
https://github.com/Max-Makhrov/GoogleSheets/blob/master/Json.gs
示例用法:
=getJsonArrayAsTable(C2)
我今天需要在 Google Sheet 秒做类似的事情。我想出的解决方案非常简单。它可能有用,但有几个依赖项:
- JSON 数据符合 Google Apps Script Range-like 结构(示例如下)**。
- A custom function 使用 Google Apps 脚本定义。
自定义函数
function JSONTOJS(JSONString) {
return JSON.parse(JSONString);
}
示例数据
一个简单的列表:
["Option 1", "Option 2", "Option 3", "Option 4"]
表格数据:
[["Title 1", "Title 2", "Title 3", "Title 4"], ["Option 1", "Option 2", "Option 3", "Option 4"], ["Option 5", "Option 6", "Option 7", "Option 8"]]
键值对:
[["key1","value 1"], ["key2","value 2"], ["key3","value 3"]]
正在使用中:
假设这些 JSON 字符串之一位于单元格 A1 中,在其他单元格中输入以下公式,数据将显示在 Sheet.
中的单元格中
=JSONTOJS(A1)
Example Sheet (get a copy of it)
** 如果您要定义数据结构,这可能会有用。您不太可能以这种格式从某些服务接收数据(它非常 Google Sheet 是独一无二的),在这种情况下,您的里程会有所不同。
我正在尝试解析 Excel 文件中包含 JSON 数组数据的列。我想将该 JSON 数组转换为多行。
我试过将文本拆分到列中,但结果不一致。
输入:
预期输出:
你可以在这个Googlesheet
中找到我的输入和expected_outputsheet
https://docs.google.com/spreadsheets/d/1zohaZXEoppbn4GBq-BLEFHk5n4PPwYPOTnbZbq6YbNs/edit?usp=sharing
有很多方法,其中之一是:
=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(IFERROR(SPLIT(C2:C, ","))<>"", "♦"&A2:A&"♠"&B2:B&"♠"&
REGEXEXTRACT(SPLIT(SUBSTITUTE(C2:C, """", ), ","), ":(\d+)"), ))
,,999^99)),,999^99)), "♦")), "♠"))
=ARRAYFORMULA(SPLIT(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(LEN(A2), "♦"&A2&"♠"&B2&QUERY(TRANSPOSE("♠"&QUERY(REGEXEXTRACT(SPLIT(
TRANSPOSE(SPLIT(SUBSTITUTE(C2, """", ), "{")), ","), ":(\d+)"), "offset 1", 0))
,,999^99), )),,999^99)),,999^99)), "♦")), "♠"))
有人可以采用我项目中的代码。
json 是一种棘手的格式,它使用不同的数据类型并且还可能包含嵌套项:
{ key: { key1: "a", key2: "b" } }
这就是使用 google-apps-script 完成任务的原因。
请copy示例文件:
或在此处查看源代码:
https://github.com/Max-Makhrov/GoogleSheets/blob/master/Json.gs
示例用法:
=getJsonArrayAsTable(C2)
我今天需要在 Google Sheet 秒做类似的事情。我想出的解决方案非常简单。它可能有用,但有几个依赖项:
- JSON 数据符合 Google Apps Script Range-like 结构(示例如下)**。
- A custom function 使用 Google Apps 脚本定义。
自定义函数
function JSONTOJS(JSONString) {
return JSON.parse(JSONString);
}
示例数据
一个简单的列表:
["Option 1", "Option 2", "Option 3", "Option 4"]
表格数据:
[["Title 1", "Title 2", "Title 3", "Title 4"], ["Option 1", "Option 2", "Option 3", "Option 4"], ["Option 5", "Option 6", "Option 7", "Option 8"]]
键值对:
[["key1","value 1"], ["key2","value 2"], ["key3","value 3"]]
正在使用中: 假设这些 JSON 字符串之一位于单元格 A1 中,在其他单元格中输入以下公式,数据将显示在 Sheet.
中的单元格中=JSONTOJS(A1)
Example Sheet (get a copy of it)
** 如果您要定义数据结构,这可能会有用。您不太可能以这种格式从某些服务接收数据(它非常 Google Sheet 是独一无二的),在这种情况下,您的里程会有所不同。