我需要使用公式将excel表排序到其他范围,如下所示:
Oritinal table:
A B C D
1 name val1 val2 val3 name val1 val2 val3
2 NN 5.70 0.50 1.20 LD 2.30 0.90 2.40
3 LD 2.30 0.90 2.40 sort by val1=> PL 4.60 0.80 3.30
4 PL 4.60 0.80 3.30 NN 5.70 0.50 1.20
step1:使用数组公式{= INDEX($ A $ 2:$ D $ 4,MATCH(小($ B $ 2:$ B $ 4,ROW() - ROW(A $ 7)+1),$ B $ 2:$ B $ 4, 0),0)},我得到以下结果:
7 LD LD LD LD
8 PL PL PL PL
9 NN NN NN NN
step2:然后我测试了索引公式为{= INDEX($ A $ 2:$ D $ 4,2,0)},这里我指定了一个静态行号,索引函数按预期返回一个完整行:
7 LD 2.3 0.9 2.4
8 LD 2.3 0.9 2.4
9 LD 2.3 0.9 2.4
step3:然后另一个带有动态行号的测试为{= INDEX($ A $ 2:$ D $ 4,ROW() - 6,0)},现在该函数只返回第一列作为step1:
7 NN NN NN NN
8 LD LD LD LD
9 PL PL PL PL
为什么index()只返回带动态行号的第一列?
如何使用公式对表进行排序(没有vba,没有GUI操作)?
为什么index()只返回带动态行号的第一列?
它应该是=INDEX($A$2:$D$4,0,Column())
如何使用公式对表进行排序(没有vba,没有GUI操作)?
您可以。您可以使用small()或large()函数来获取val1,然后使用index / match或vlookup根据您获得的val1填充其他值。 (如果你/其他人被困,请评论)。
+ ---- [编辑] + ----
实施:
使
G2 = 1
G3 = 2
G4 = 3
和
H2 =INDEX(A:A,MATCH($I2,$B:$B,0))
I2 =SMALL(B:B,G2)
J2 =INDEX(C:C,MATCH($I2,$B:$B,0))
K2 =INDEX(D:D,MATCH($I2,$B:$B,0))
并拖动到K4。完成。
希望有所帮助。 (: