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

时间:2016-04-06 12:19:54

标签: excel excel-formula

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

步骤1:使用数组公式{= 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

第二步:然后我测试了索引公式为{= 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操作)?

1 个答案:

答案 0 :(得分: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。做完了

希望有帮助。 (: