提问人:xiii 提问时间:11/10/2023 最后编辑:Mayukh Bhattacharyaxiii 更新时间:11/11/2023 访问量:180
重复每个值的次数不同。胜过
Repeat each value a different number of times. Excel
问:
有 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中执行此操作?
我不明白如何根据我的目的调整这个公式。
=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
答:
7赞
Mayukh Bhattacharya
11/10/2023
#1
尝试以下公式MAKEARRAY()
• 细胞中使用的配方D1
=LET(
α, A1:A3,
φ, B1:B3,
TOCOL(MAKEARRAY(ROWS(α),MAX(φ),LAMBDA(δ,ε,
IF(ε<=INDEX(φ,δ),TEXT(ε,"X00")&INDEX(α,δ),p))),3))
替代方法,但请注意,由于使用有字符限制:ARRAYTOTEXT()
• 细胞中使用的配方D1
=TEXTSPLIT(ARRAYTOTEXT(MAP(A1:A3,B1:B3,LAMBDA(α,φ,ARRAYTOTEXT(TEXT(SEQUENCE(,φ),"X00")&α)))),,", ")
同样在给定的链接中,确实有一个使用辅助列的解决方案,但它可以通过对 JvdV Sir 提出的公式进行一些微调来实现。
• 细胞中使用的配方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
- 最后,要将其导入回 --> 单击或 --> 第一个单击的将创建一个具有所需输出的输出,而后者将提示一个窗口,询问您将结果放置在哪里。ExcelClose & LoadClose & Load ToNew Sheet
评论
1a
2a
1b
2b
3b
1c
3c