Excel 将列单元格以2-3为一组展开为3列?

Excel 将列单元格以2-3为一组展开为3列?,excel,excel-formula,Excel,Excel Formula,我知道这个问题让人困惑,所以我给你一张不言自明的图片 我有一个很长的列,重复的单元格有3个,很少有2个。准确地说,它的格式是A-1、A-2、A-3、B-1、B-2、B-3等等 连字符后面的部分始终相同,但前面的部分有所不同 A和B各有3个元素,然后C看起来像C-1,C-2,没有C-3 这在专栏中并不经常发生,但有时会发生 现在我必须把A的所有3个元素都分成3列,就像图中一样。这在sheets/excel中是否可行 =ARRAYFORMULA(IFNA(VLOOKUP({FILTER(A2:A,

我知道这个问题让人困惑,所以我给你一张不言自明的图片

我有一个很长的列,重复的单元格有3个,很少有2个。准确地说,它的格式是A-1、A-2、A-3、B-1、B-2、B-3等等

连字符后面的部分始终相同,但前面的部分有所不同

A和B各有3个元素,然后C看起来像C-1,C-2,没有C-3

这在专栏中并不经常发生,但有时会发生

现在我必须把A的所有3个元素都分成3列,就像图中一样。这在sheets/excel中是否可行

=ARRAYFORMULA(IFNA(VLOOKUP({FILTER(A2:A, REGEXMATCH(A2:A, "-1$")), 
  FILTER(REGEXEXTRACT(A2:A, "(.+-)")&2, REGEXMATCH(A2:A, "-1$")), 
  FILTER(REGEXEXTRACT(A2:A, "(.+-)")&3, REGEXMATCH(A2:A, "-1$"))}, A2:A, 1, 0)))

这是一个Excel Office365版本。它列出了标题中的所有.pdf选项,因为文件名中似乎有其他拼写

=LET(input,A2:A1000,
    data,FILTER(input,(input<>"")*(RIGHT(input,4)=".pdf")),

    rightPartDash,IF(ISERROR(FIND("-",data)),data, RIGHT(data,LEN(data) - FIND("|",SUBSTITUTE(data,"-","|",LEN(data)-LEN(SUBSTITUTE(data,"-","")))))),
    rightPartSpace,IF(ISERROR(FIND(" ",data)),data, RIGHT(data,LEN(data) - FIND("|",SUBSTITUTE(data," ","|",LEN(data)-LEN(SUBSTITUTE(data," ","")))))),
    rightpart,IF(LEN(rightPartSpace)>LEN(rightPartDash),rightPartDash,rightPartSpace),

    leftPart,LEFT(data,LEN(data)-LEN(rightpart)),

    leftList,UNIQUE(leftPart),
    rightList,TRANSPOSE(UNIQUE(rightpart)),
    searchFor,leftList&rightList,
    output, XLOOKUP(searchFor,data,data,""),

    i, SEQUENCE(ROWS(leftList)+1,1,0),
    j, SEQUENCE(1,COLUMNS(rightList)),
    IF(i = 0,rightList,INDEX(output,i,j)))
=LET(输入,A2:A1000,
数据,过滤器(输入,(输入“”)*(右(输入,4)=“.pdf”),
rightPartDash,IF(iError(FIND(“-”,data)),data,RIGHT(data,LEN(data)-FIND(“|”),SUBSTITUTE(data),“-”,“|”,LEN(data)-LEN(SUBSTITUTE(data),”-“,”),
rightPartSpace,IF(iError(FIND(“,data)),data,RIGHT(data,LEN(data)-FIND(“|”),SUBSTITUTE(data,”,“|”),LEN(data)-LEN(SUBSTITUTE(data,”,“,”)),
rightpart,如果(LEN(rightPartSpace)>LEN(rightPartDash),rightPartDash,rightPartSpace),
左部分,左(数据,LEN(数据)-LEN(右部分)),
leftList,唯一(leftPart),
右列表,转置(唯一(右部分)),
搜索、左列表和右列表,
输出,XLOOKUP(searchFor,data,data,“”),
i、 顺序(行(左列表)+1,1,0),
j、 序列(1,列(右列表)),
IF(i=0,rightList,INDEX(output,i,j)))

您使用的是谷歌还是Excel?请选择一个,因为答案会有所不同,而且要求两者都太宽泛了。@Scott Craner让我们使用Excel,尽管对您来说任何东西都更容易,因为我可以在这两个作品之间复制结果。对于这个例子来说,这很神奇。你能给我解释一下这个公式吗?这样我就可以把它应用到我的实际案例中去了?这样我就可以知道在配方中什么东西该碰,什么东西不该碰。顺便说一句,你还帮我解决了其他一些问题,你很棒:)首先过滤掉A列中以-1结尾的内容。第二个和第三个过滤器的作用相同,但regexextract将去掉1位,并强制附加2和3。在这一点上,甚至C-3也存在,所以现在我们使用VLOOKUP检查列中是否存在C-3。如果没有,它将从最终输出中删除抱歉打扰您-我试图将您的解决方案应用到我的案例中,但它会留下空白单元格。我不确定我做错了什么。你介意试一试吗?请看:我注意到在您的数据中有几种不同的“Rjesenje”拼写。