首页 > 解决方案 > 自动将文本转换为行和列(Google 表格)

问题描述

我正在尝试将从 Squarespace 网站提交的订单表格数据从以下格式转换为具有 4 列的表格:

Store,Item,Quantity,Details;Store2,Item2,Quantity2,Details2; (ETC...)

逗号分隔列,分号分隔行。到目前为止我尝试过的所有方法都成功地将数据拆分为所需的形式,但是在添加新数据时会出现问题。提交表单时,它会在下一个可用的空行中创建一个新行。我似乎无法找到一种方法来自动化流程而不会收到周期性依赖错误,因为每个订单可以有任意数量的项目条目。

电子表格示例: https ://docs.google.com/spreadsheets/d/1ZEWtmMiWO0Us76Z7o7GB7Salw1Rl_-1PhK6GzeOD0GM/edit?usp=sharing

上面的示例根据需要拆分数据。我不知道如何使它与作为新行添加的数据一起工作。我还想继续使用工作表来实现其云功能。

任何建议都值得赞赏,包括处理数据的全新方法,无论是使用脚本、与 Squarespace 表单兼容的不同远程访问订单处理应用程序,还是在 Sheets 中本地。

标签: javascriptarraysgoogle-sheetssplit

解决方案


  • 您要实现以下转换。

    在此处输入图像描述

示例公式:

=ARRAYFORMULA(SPLIT(TRANSPOSE(split(A4,";")),","))
  • 在此公式中,单元格“A4”具有输入值。
  • 您已经使用了 的公式=TRANSPOSE(split(A10,";"))。在这个答案中,我使用了这个。
    • 对于,使用和TRANSPOSE(split(A10,";"))拆分值。,SPLITARRAYFORMULA

结果:

在此处输入图像描述

示例脚本:

当您想使用 Google Apps Script 时,您还可以使用以下脚本。

function myFunction(value) {
  const values = value.split(";");
  return values.splice(0, values.length - 1).map(e => e.split(",").map(f => isNaN(f) ? f : Number(f)));
}
  • 在这种情况下,请将脚本复制并粘贴到脚本编辑器中,然后将自定义函数=myFunction(A4)放到一个单元格中。
    • 可以得到与上式相同的结果。

参考:


推荐阅读