表sorting和查找

我有一个Excel表格(25×25),看起来像这样,

C1 C2 C3 R1 5 6 7 R2 1 7 9 R3 2 3 0 

我的目标是使它看起来像这样,

 C3 R3 0 C1 R2 1 C1 R3 2 C2 R3 3 C1 R1 5 C2 R1 6 C2 R2 7 C3 R1 7 C3 R2 9 

它会生成一个按照第一个值sorting的新表。 它还告诉相应的列和行的名称。表格有重复,负数和小数。

我这样做是因为我想find一个给定值的3个最接近的候选人(以及因此的C和R)。 而VLOOKUP()需要一个sorting表。

另一个问题(向前一步)是VLOOKUP()返回最接近的较小的值,而不是实际上最小的值。 有没有更好的方法来做到这一点或解决方法? 所以结果就是这样一个整洁的桌子,

 Value to look up = 2.8 >> C2 R3 3 >> C1 R3 2 >> C1 R1 5 

由于某些原因,我不能在这个项目中使用VBA。 MS Excel中只有内置函数的任何解决scheme?

如果您只需要使用本地工作表函数,则可以完成此操作; 即使没有数组公式。

flatten_matrix

用A1:D4中的原始数据,F3:H3中的公式是,

 =INDEX(B$1:D$1, AGGREGATE(15, 6, COLUMN($A:$C)/(B$2:D$4=H3), COUNTIF(H$3:H3, H3))) =INDEX(A$2:A$4, AGGREGATE(15, 6, ROW($1:$3)/(B$2:D$4=H3), COUNTIF(H$3:H3, H3))) =SMALL(B$2:D$4,ROW(1:1)) 

根据需要填写。

K5:N5中的公式是,

 =INDEX(B$1:D$1, AGGREGATE(15, 6, COLUMN($A:$C)/(B$2:D$4=M5), COUNTIF(M$5:M5, M5))) =INDEX(A$2:A$4, AGGREGATE(15, 6, ROW($1:$3)/(B$2:D$4=H3), COUNTIF(M$5:M5, M5))) =IF(COUNTIF($B$2:$D$4, N5+$K$2)>=COUNTIF(N$5:N5, N5), N5+$K$2, $K$2-N5) =AGGREGATE(15,6,ABS($B$2:$D$4-$K$2),ROW(1:1)) 

根据需要填写。

我在K5:N13matrix中包含了足够的行,您可以看到如何处理这两个值。