重复每个值的次数不同。胜过

Repeat each value a different number of times. Excel

提问人:xiii 提问时间:11/10/2023 最后编辑:Mayukh Bhattacharyaxiii 更新时间:11/11/2023 访问量:180

问:

有 2 列数据:

a 2
b 3
c 1

结果:

X01a
X02a
X01b
X02b
X03b
X01c

在 Google 表格中,我使用以下公式:

=tocol(map(A2:A;B2:B;lambda(a;b;if(counta({a\b})<>2;;index("X"&text(sequence(1;b);"00")&a&"|"&b))));1)

在Excel中,此公式给出错误:#CALC!error (嵌套数组)

如何在Excel中执行此操作?

Google 表格中将每个值重复不同的次数中找到答案

我不明白如何根据我的目的调整这个公式。

=LET(Data,A2:A5,Repeats,B2:B5,
    Both,HSTACK(Data,Repeats),Filtered,FILTER(Both,Repeats>0),
    dData,TAKE(Filtered,,1),dStacked,VSTACK(dData,""),
    rData,TAKE(Filtered,,-1),rSequence,SEQUENCE(SUM(rData)),
    rStacked,VSTACK(0,rData),rScanned,SCAN(1,rStacked,LAMBDA(a,b,a+b)),
    rIndexes,MATCH(rSequence,rScanned),
Result,INDEX(dStacked,rIndexes),Result)

该公式将返回超过 250k 的结果。我希望它没有挂断。:)

使用额外的列找到答案。是否有非 VBA Excel 溢出公式来创建和处理数组的数组?

如何在没有额外列的情况下获得结果? 所有建议的方法都返回:

a
a
b
b
b
c

我需要一个带有运行数字的结果。

1a
2a
1b
2b
3b
1c
Excel 公式 序列 PowerQuery

评论

0赞 Mayukh Bhattacharya 11/10/2023
在目前的编辑中有一个错别字,它应该是 、 、 、 、 和 而不是1a2a1b2b3b1c3c
0赞 xiii 11/11/2023
@MayukhBhattacharya 还没试过。我认为你的公式是正确的。我明天早上会去电脑前试试。非常感谢您的帮助。

答:

7赞 Mayukh Bhattacharya 11/10/2023 #1

尝试以下公式MAKEARRAY()

enter image description here


• 细胞中使用的配方D1

=LET(
     α, A1:A3,
     φ, B1:B3,
     TOCOL(MAKEARRAY(ROWS(α),MAX(φ),LAMBDA(δ,ε,
     IF(ε<=INDEX(φ,δ),TEXT(ε,"X00")&INDEX(α,δ),p))),3))

替代方法,但请注意,由于使用有字符限制:ARRAYTOTEXT()

enter image description here


• 细胞中使用的配方D1

=TEXTSPLIT(ARRAYTOTEXT(MAP(A1:A3,B1:B3,LAMBDA(α,φ,ARRAYTOTEXT(TEXT(SEQUENCE(,φ),"X00")&α)))),,", ")

同样在给定的链接中,确实有一个使用辅助列的解决方案,但它可以通过对 JvdV Sir 提出的公式进行一些微调来实现。

enter image description here


• 细胞中使用的配方D1

=DROP(REDUCE("",A1:A3&"|"&B1:B3,LAMBDA(a,b,
  LET(x,TEXTBEFORE(b,"|"),y,--TEXTAFTER(b,"|"),
  VSTACK(a,TEXT(SEQUENCE(y),"X00")&INDEX(x,SEQUENCE(y,,,0)))))),1)

参考 链接到帖子:是否有非 VBA Excel 溢出公式来创建和处理数组的数组?


这可以使用 快速轻松地完成。要使用上述程序实现此目的,请使用窗口执行以下简单步骤:POWER QUERYPOWER QUERYUI


  • 首先将源范围转换为表并相应地命名,在本例中,我将其命名为Table1

  • 接下来,从 Tab --> 打开一个空白查询DataGet & Transform Data --> Get Data --> From Other Sources --> Blank Query

  • 上面让窗口打开,现在从 Tab --> --> 并通过删除您看到的任何内容来粘贴以下内容,然后按Power QueryHomeAdvanced EditorM-CodeDone

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Create_Sequence = Table.AddColumn(Source, "Custom", each {1..[Column2]}),
    Expand_To_NewRows = Table.ExpandListColumn(Create_Sequence, "Custom"),
    Padding = Table.AddColumn(Expand_To_NewRows, "Output", each "X" & Text.PadStart(Text.From([Custom]),2,"0") & [Column1]),
    Remove_Unwanted_Cols = Table.SelectColumns(Padding,{"Output"}),
    Removed_Empty = Table.SelectRows(Remove_Unwanted_Cols, each [Output] <> null and [Output] <> "")
in
    Removed_Empty

enter image description here


  • 最后,要将其导入回 --> 单击或 --> 第一个单击的将创建一个具有所需输出的输出,而后者将提示一个窗口,询问您将结果放置在哪里。ExcelClose & LoadClose & Load ToNew Sheet

enter image description here