Dar*_*ook 2 worksheet-function microsoft-excel
我正在寻找一个公式,该公式将根据两组数据创建笛卡尔积,其中任意一组数据都可以增长或缩小。
@ScottCraner 在这篇文章中给出的答案几乎给了我答案,只是它没有按预期溢出。
Excel - 将 a 列和 b 列组合成 d 列和 e 列
我不是在寻找 PowerQuery 或 VBA 解决方案 - PQ 涉及信任员工按下Refresh,VBA 涉及信任员工注意到“启用宏”的黄色条并理解其含义。
在上图中,我尝试M:N使用 columns 中的数据获取 columns 中的值A:F。
目前我正在获取 中的值J:K。
D表中的列中,想象中称为Table1。F1包含=SEQUENCE(EndDate-StartDate+1,,StartDate)给我提供开始和结束之间所有日期的列表的公式。G1包含公式=UNIQUE(Table1[Process])I1包含公式=SEQUENCE(COUNTA($F$1#)*COUNTA(G1#)),该公式将向下溢出以给出最终表中的行数(即我需要溢出多少)。J1包含公式=IF(I1#<>"",INDEX($F$1#,INT(ROW()-1)/COUNTA($G$1#)+1)). Index部分本身将向下拖动并给出 column 中的值M,或者我可以选择范围并使用数组公式也给出值。J4它应该引用单元格F2....并且确实如此,但随后返回单元格的值F1。
我有一种感觉,我错过了一些关于溢出范围的基本知识。有任何想法吗?
使用 Let 和 CHOOSE,我们可以将所有步骤合并到一个公式中以输出两列:
=LET(rng,Table1[Process],
strt,A2,
end,B2,
unq,UNIQUE(rng),
dt,SEQUENCE(end-strt+1,,strt),
cntP,COUNTA(unq),
cntD,COUNT(dt),
lstP,INDEX(unq,INT(SEQUENCE(cntP*cntD,,1,1/cntD))),
lstD,INDEX(dt,MOD(SEQUENCE(cntP*cntD,,0),cntD)+1),
CHOOSE({1,2},lstP,lstD))
Run Code Online (Sandbox Code Playgroud)
基本上都是按照你的步骤来的。
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |