excel公式index()不返回动态行号-EXCEL 2013的行

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

我需要使用公式将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操作)?

excel excel-formula
1个回答
0
投票

为什么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。完成。

希望有所帮助。 (:

© www.soinside.com 2019 - 2024. All rights reserved.