重复每个值不同的次数。Excel

xii*_*iii 0 excel sequence excel-formula powerquery

有2列数据:

\n
a 2\nb 3\nc 1\n
Run Code Online (Sandbox Code Playgroud)\n

结果:

\n
X01a\nX02a\nX01b\nX02b\nX03b\nX01c\n
Run Code Online (Sandbox Code Playgroud)\n

在 Google Sheets 中我使用以下公式:

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

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

\n

如何在 Excel 中执行此操作?

\n

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

\n

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

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

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

\n

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

\n

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

\n
a\na\nb\nb\nb\nc\n
Run Code Online (Sandbox Code Playgroud)\n

我需要一个带有连续数字的结果。

\n
1a\n2a\n1b\n2b\n3b\n1c\n
Run Code Online (Sandbox Code Playgroud)\n

May*_*rya 5

使用以下公式尝试MAKEARRAY()

\n

在此输入图像描述

\n
\n

\xe2\x80\xa2 单元格中使用的公式D1

\n
=LET(\n     \xce\xb1, A1:A3,\n     \xcf\x86, B1:B3,\n     TOCOL(MAKEARRAY(ROWS(\xce\xb1),MAX(\xcf\x86),LAMBDA(\xce\xb4,\xce\xb5,\n     IF(\xce\xb5<=INDEX(\xcf\x86,\xce\xb4),TEXT(\xce\xb5,"X00")&INDEX(\xce\xb1,\xce\xb4),p))),3))\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n

在此输入图像描述

\n
\n

\xe2\x80\xa2 单元格中使用的公式D1

\n
=TEXTSPLIT(ARRAYTOTEXT(MAP(A1:A3,B1:B3,LAMBDA(\xce\xb1,\xcf\x86,ARRAYTOTEXT(TEXT(SEQUENCE(,\xcf\x86),"X00")&\xce\xb1)))),,", ")\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n

在此输入图像描述

\n
\n

\xe2\x80\xa2 单元格中使用的公式D1

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

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

\n
\n

使用 可以快速轻松地完成此操作POWER QUERY。要使用上述过程实现此目的,请使用POWER QUERYwindow遵循以下简单步骤UI遵循以下简单步骤:

\n
\n
    \n
  • 首先将源范围转换为表并相应命名,在本例中我将其命名为Table1
  • \n
\n
\n
    \n
  • 接下来,从DataTab --> Get & Transform Data--> Get Data--> From Other Sources-->打开一个空白查询Blank Query
  • \n
\n
\n
    \n
  • 上面的内容让Power Query窗口打开,现在从HomeTab --> Advanced Editor--> 并通过删除您看到的任何内容来粘贴以下内容M-Code,然后按Done
  • \n
\n
\n
let\n    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],\n    Create_Sequence = Table.AddColumn(Source, "Custom", each {1..[Column2]}),\n    Expand_To_NewRows = Table.ExpandListColumn(Create_Sequence, "Custom"),\n    Padding = Table.AddColumn(Expand_To_NewRows, "Output", each "X" & Text.PadStart(Text.From([Custom]),2,"0") & [Column1]),\n    Remove_Unwanted_Cols = Table.SelectColumns(Padding,{"Output"}),\n    Removed_Empty = Table.SelectRows(Remove_Unwanted_Cols, each [Output] <> null and [Output] <> "")\nin\n    Removed_Empty\n
Run Code Online (Sandbox Code Playgroud)\n
\n

在此输入图像描述

\n
\n
    \n
  • 最后,将其导入回Excel--> 单击Close & LoadClose & Load To--> 单击的第一个应创建一个New Sheet具有所需输出的文件,而后者将提示一个窗口,询问您将结果放在哪里。
  • \n
\n
\n

在此输入图像描述

\n
\n