如何解决溢出时动态堆叠列的公式
对于 EXCEL 365
我正在寻找一个公式,该公式将动态堆叠两列的内容,一个在另一个的顶部。例如,如果我以:
开头我希望公式产生:
我可以通过“半动态”来实现:
=IF(ROWS($1:1)>COUNTA(A:A)+COUNTA(C:C),"",IF(ROWS($1:1)<COUNTA(A:A)+1,INDEX(A:A,ROWS($1:1)),INDEX(C:C,ROWS($1:1)-COUNTA(A:A))))
只需在第一列下INDEXs
,直到检索到所有项目,然后在第二列下INDEXs
。
- 从输出调整为从 A 或 B 列添加/删除项目的意义上讲,它是动态的
- 从某种意义上讲它是手动的,必须将其向下手动复制而不是自行散落下来
我可以通过VBA获得所需的行为:
Option Explicit
Public Function stack2(r1 As Range,r2 As Range) As Variant
Dim c1 As Long,c2 As Long,r As Range,temp
Dim i As Long
c1 = r1.Count
c2 = r2.Count
ReDim temp(1 To c1 + c2,1 To 1)
i = 1
For Each r In r1
temp(i,1) = r.Value
i = i + 1
Next r
For Each r In r2
temp(i,1) = r.Value
i = i + 1
Next r
stack2 = temp
End Function
但是我需要一个公式而不是VBA。我可以使用以下方法检索和分散单个列:
=INDEX(A:A,SEQUENCE(COUNTA(A:A)))
但是我不知道如何处理两列。
任何想法?
解决方法
将ROWS($1:1)
替换为SEQUENCE(COUNTA(A:A)+COUNTA(C:C))
=IF(SEQUENCE(COUNTA(A:A)+COUNTA(C:C))<COUNTA(A:A)+1,INDEX(A:A,SEQUENCE(COUNTA(A:A)+COUNTA(C:C))),INDEX(C:C,SEQUENCE(COUNTA(A:A)+COUNTA(C:C))-COUNTA(A:A)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。