在 Excel 中将行彼此相邻放置的代码

问题描述 投票:0回答:1

我正在寻找一个简短的代码(或公式?),我可以用它来重新排列我的数据,特别是将行彼此相邻放置(见图)。

Rearrange rows next to each other

谢谢你。

我发现的最接近的是结合使用 MOD 和 OFFSET 的公式(https://www.youtube.com/watch?v=Tt4nUYVp2v0&ab_channel=MikeWong),但这并不能完全达到我想要的效果。

数据:

A B C
1
2 1 3112.5 947
3 2 3087.5 937.5
4 3 1271 1162
5 4 1086 1239
6 1 3112.5 947
7 2 3087.5 937.5
8 3 1271 1162
9 4 1086 1239
10 1 3112.5 947
11 2 3087.5 937.5
12 3 1271 1162
13 4 1086 1239
14 1 3112.5 947
15 2 3087.5 937.5
16 3 1271 1162
17 4 1086 1239
18 1 3112.5 947
19 2 3087.5 937.5
20 3 1271 1162
21 4 1086 1239
excel vba excel-formula excel-2010
1个回答
0
投票

自从您标记了 Excel 2010 以来,获得如图所示的结果有点困难:

=IFERROR(
         IF(COLUMN(A1)-1 / ((COLUMN(A1)-1)/2<=MAX($A$2:$A$21)) / (ROW(A1)<=(ROWS($A$2:$A$21)/MAX($A$2:$A$21))),
            INDEX($B$2:$C$21,
                  1+(ROW(A1)-1)*MAX($A$2:$A$21)+(COLUMN(A1)-2)/2,
                  1+ISODD(COLUMN(A1))),
            ROW(A1)),
         "")

使用 Office 365,这一切都会变得更加容易:

=LET(w,WRAPROWS(TOCOL(B2:C21),8),HSTACK(SEQUENCE(ROWS(w)),w))

或动态:

=LET(range,A2:C21,
     pattern,TAKE(range,,1),
     values,DROP(range,,1),
     n,MAX(pattern),
     wrap,WRAPROWS(TOCOL(values),n*COLUMNS(values)),
HSTACK(SEQUENCE(ROWS(wrap)),wrap))
© www.soinside.com 2019 - 2024. All rights reserved.