Csv 如何在不同列中分隔逗号分隔的值,同时在Google工作表中保留行的其余部分中的值?

Csv 如何在不同列中分隔逗号分隔的值,同时在Google工作表中保留行的其余部分中的值?,csv,google-sheets,google-sheets-formula,Csv,Google Sheets,Google Sheets Formula,如何调整逗号分隔的值,使用逗号分隔的值被分隔,并为此值创建新行,其他值与值所在行中的值相同?看起来是这样的: 从这个 …对这个 我实际上在寻找一个答案,在可能的情况下不使用谷歌脚本,也不使用巨大的长而复杂的公式。可以在Google sheets中使用透视表,但这也不是我的偏好。但如果不可能只使用公式,那么我也愿意接受其他答案 这个问题我已经问了一年多了,经过几个小时的搜索,我在网上找不到真正的答案。将有使用谷歌脚本的答案,但这并不真正属于我的问题范围。如果当前问题仍然没有答案,我愿意调整或重

如何调整逗号分隔的值,使用逗号分隔的值被分隔,并为此值创建新行,其他值与值所在行中的值相同?看起来是这样的:

从这个

…对这个

我实际上在寻找一个答案,在可能的情况下不使用谷歌脚本,也不使用巨大的长而复杂的公式。可以在Google sheets中使用透视表,但这也不是我的偏好。但如果不可能只使用公式,那么我也愿意接受其他答案

这个问题我已经问了一年多了,经过几个小时的搜索,我在网上找不到真正的答案。将有使用谷歌脚本的答案,但这并不真正属于我的问题范围。如果当前问题仍然没有答案,我愿意调整或重新表述我的问题

我自己也不知道如何回答这个问题,我所做的尝试也不值得认真对待。

Dragable Formula solution 让我们看看我能不能把这个球打起来

一瞥 不幸的是,此解决方案不稳定,因为它依赖于
flant
未记录的函数(将任何范围转换为列数组),并且需要两个公式才能工作。虽然我确信您可以在不使用
flant()
的情况下完成同样的工作,但这至少为我们节省了一些打字时间,因为我们非常依赖它。如果没有扁平化,我们可以通过
转置(SPLIT(TEXTJOIN(…))
实现同样的效果,这几乎没有那么优雅

核心公式虽然有一个线性增长因子,并且可能会因为更多列而变得混乱,但它的设置模式很简单。它也可以拖动,这是仅次于单个
数组formula
的最佳方式

阶段1:序列化行 正如您所料,我们将使用一些字符串序列化技巧来获得所需内容。以下是核心公式:

=TEXTJOIN(",",,
ArrayFormula(
    Flatten(Flatten(Flatten(Flatten(Flatten(
      SPLIT(A1,",")&",")&
      SPLIT(B1,",")&",")&
      SPLIT(C1,",")&",")&
      SPLIT(D1,",")&",")&
      SPLIT(E1,",")&";")
))&","
如您所见,该行中每个单元格内都有逗号。要添加更多列,只需添加另一个
展平(
)并将您的列添加到列表中。只需确保最后一个使用
而不是

通常,当
ArrayFormula
应用于列向量和行向量时,我们可以对这两个向量混合在一起的每个排列执行操作

示例:

  • =ArrayFormula({0;1}&{2,3})
    相当于
    ={“02”,“12”,“03”,“13”}
  • =ArrayFormula(序列(10)*序列(1,10))
    给出了一个10x10的乘法表
在我们的例子中,我们使用它根据每个单元格中的逗号生成所有可能的行排列,将行序列化为CSV字符串,每个字符串以分号结尾,然后将所有行合并为一个长字符串。额外的
“,”
是为了在下一阶段将多个表连接在一起

设置了适当的列数后,将其向下拖动到表格的高度。(注意:如果某些值可能为空,则还必须对每个
拆分
进行一些错误检查)

第2阶段:反序列化 这个公式相当简单。(假设序列化数据在F列中。)

首先,使用
JOIN
将所有字符串粘合在一起。因为我们知道每一行都以“,”结尾,所以我们将其拆分为行。之后,我们可以通过拆分“,”将每一行拆分为单元格,从而生成表

结论
  • 当然,这不是一个单一的
    ArrayFormula
    ,但这两个公式都不是那么复杂,这很好。
    ArrayFormula
    s可能很快变得混乱和混乱
  • 我们也设法避免了脚本编写,这是一个优点
  • 如果发现序列化列不美观,也可以隐藏它

希望这至少有点有用。

我希望有人能通过公式解决这个问题。使用脚本并不困难。请按照中的建议添加搜索/研究工作的简要说明。挑战!!,如果使用dynamic(不可拖动)完成,我将奖励100个代表分
ARRAYFORMULA
@Rubén-我已经补充了一点问题。如果你认为我需要调整任何东西,我很乐意这样做。@Fabian true,但如果没有人提供答案,代表分数将徒劳地丢失。此外,如果赏金的作者没有授予赏金,系统可以强制将此类赏金授予答案不能让赏金作者满意。你的问题可以通过脚本或帮助表上的帮助栏轻松解决,但真正的挑战是提供直接的动态数组公式。(如果这个问题在大海中找不到答案,也许我会在几天内赏金)谢谢你的魔法。尽管使用了一个未经证明的公式和两个单独的公式,我还是会同意你的答案。
=ArrayFormula(
  SPLIT(
    TRANSPOSE(
      SPLIT(
        JOIN(,F:F),
        ";,",
      )
    ),
    ","
  )
)