Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel公式索引()未返回具有动态行号的行-excel 2013_Excel_Excel Formula - Fatal编程技术网

excel公式索引()未返回具有动态行号的行-excel 2013

excel公式索引()未返回具有动态行号的行-excel 2013,excel,excel-formula,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

我需要使用公式将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(SMALL($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
步骤2:然后我测试了索引公式为{=index($A$2:$D$4,2,0)},在这里我指定了一个静态行号,index函数按预期返回了一整行:

7 LD    2.3    0.9    2.4
8 LD    2.3    0.9    2.4
9 LD    2.3    0.9    2.4
步骤3:然后是另一个测试,动态行号为{=INDEX($A$2:$D$4,row()-6,0)},现在函数只返回第一列作为步骤1:

7 NN    NN    NN    NN
8 LD    LD    LD    LD
9 PL    PL    PL    PL
为什么index()只返回具有动态行号的第一列

如何仅使用公式对表进行排序(无vba,无GUI操作)

为什么index()只返回具有动态行号的第一列

它应该是
=索引($A$2:$D$4,0,Column())

如何仅使用公式对表进行排序(无vba,无GUI操作)

你可以。您可以使用small()或large()函数来获取val1,然后使用index/match或vlookup根据您得到的val1填充其他值。(如果您/其他人被卡住,请发表评论)

+----[编辑]----+

植入:

制造

然后拖动直到K4。完成了

希望有帮助。(:

为什么index()只返回具有动态行号的第一列

它应该是
=索引($A$2:$D$4,0,Column())

如何仅使用公式对表进行排序(无vba,无GUI操作)

您可以。您可以使用small()或large()函数获取val1,然后使用index/match或vlookup根据您获得的val1填充其他值。(如果您/其他人被卡住,请发表评论)

+----[编辑]----+

植入:

制造

拖动直到K4。完成


希望能有所帮助。(:

使用你的第一个公式,但不要作为数组。使用
=INDEX($A$2:$D$4;MATCH(SMALL($B$2:$B$4;ROW()-ROW(D$7)+1);$B$2:$B$4;0)
作为你的公式。将你的公式复制到你的目标范围,你就会得到你想要的结果。谢谢@ctumturk,它起作用了。我希望数组函数起作用,然后转置结果。我仍然想知道为什么我不能在index()中使用动态行号。使用普通公式,您可以找到精确的值并返回该值。但是使用数组公式,您可以找到该值的数组并返回该数组的第0列。如果您像这样修改第一个公式,
{=INDEX($A$2:$D$4;MATCH(SMALL($B$2:$B$4;ROW()-ROW(A$7)+1);$B$2:$B$4;column(A$7))}
应该足够了。使用第一个公式,但不要作为数组。使用
=INDEX($A$2:$D$4;MATCH(SMALL($B$2:$B$4;ROW()-ROW(D$7)+1);$B$2:$B$4;0)
作为你的公式。将你的公式复制到你的目标范围,你就会得到你想要的结果。谢谢@ctumturk,它起作用了。我希望数组函数起作用,然后转置结果。我仍然想知道为什么我不能在index()中使用动态行号。使用普通公式,您可以找到确切的值并返回该值。但是使用数组公式,您可以找到该值的数组并返回该数组的第0列。如果您像这样修改第一个公式,
{=INDEX($A$2:$D$4;MATCH(SMALL($B$2:$B$4;ROW()-ROW(A$7)+1);$B$2:$B$4;column(A$7))
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))