这个公式提供了“原版”的位置和“新目录”范围的灵活性。
试试这个公式:
=T(INDEX(SrcCol,
-1+SrcRow+ROWS($TrgRow:TrgRow)
-IF(ROUNDUP(ROWS($TrgRow:TrgRow)/COUNTA(SrcCol),0)=2,COUNTA(SrcCol),0)))
其中:
SrcCol:是在“原版”位于
SrcRow列:是该行地方“原始列表”开始
TrgRow:是行,其中“结果”名单开始
惯例假设原版是在之间没有空白单元格。
让我们尝试与原版公式开始B6
,我们希望新的列表在D3
开始。然后在D3
中输入此公式并向下复制直到最后一行(即行10):
更换以下在上式中:
SrcCol = $B:$B
; SrcRow = 6
和TrgRow = 3
=T(INDEX($B:$B,
-1+6+ROWS($3:3)
-IF(ROUNDUP(ROWS($3:3)/COUNTA($B:$B),0)=2,COUNTA($B:$B),0)))
编辑:
如果原版是一个公式的结果,并且具有细胞返回空值(即=“”),那么我们有两个选择:
原来的公式中替换COUNTA($B:$B)
与此SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A))
和D3
输入所得到的公式:
=T(INDEX($B:$B,
-1+6+ROWS($3:3)
-IF(ROUNDUP(ROWS($3:3)/
SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A)),0)=2,
SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A)),0)))`
原来的公式中替换COUNTA($B:$B)
与此SUM(--($B:$B<>""))
和D3
输入所得到的公式作为FormulaArray
:
=T(INDEX($B:$B,
-1+6+ROWS($3:3)
-IF(ROUNDUP(ROWS($3:3)/
SUM(--($B:$B<>"")),0)=2,
SUM(--($B:$B<>"")),0)))
FormulaArrays
被输入按下CTRL + SHIFT + ENTER同时,你将看到{
和}
周围的公式,如果输入正确
来源
2016-12-21 16:27:18
EEM
这样的想法是自动生成列表中包含每个项目两次和两次? VBA解决方案是可以接受的,还是你想避免这种情况? – Werrf
我喜欢避免使用VBA,因为我需要它尽可能少的额外工作。 VBA往往变得复杂,我不想解释如何使用它。只要在指定单元格中进行了唯一更改,公式就可以工作。 – Bschacht
需要另外两条评论 – Bschacht