是否有 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)), "♦")), "♠"))

有人可以采用我项目中的代码。

是一种棘手的格式,它使用不同的数据类型并且还可能包含嵌套项:

{ key: { key1: "a", key2: "b" } }

这就是使用 完成任务的原因。

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 是独一无二的),在这种情况下,您的里程会有所不同。