Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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_Vba_Indexing_Match - Fatal编程技术网

Excel |索引匹配|

Excel |索引匹配|,excel,vba,indexing,match,Excel,Vba,Indexing,Match,我需要您在以下方面的帮助: 假设我们有3个不同的组:(A,B,C) 我们在每组中有几个值范围: (Eg. A has 0 - 100, 101 - 200 while B has 0 - 200, 201 - 400 and C has 0 - 300, 301 - 600.) 最后,对于属于任何范围的每个组,他们将被分配一个最终编号。 (例如 目前我的索引匹配公式如下: "=INDEX(finalnumber!F2:F29,MATCH(C11&C25,Group!A2:A29&

我需要您在以下方面的帮助:

假设我们有3个不同的组:(A,B,C)

我们在每组中有几个值范围:

(Eg. A has 0 - 100, 101 - 200 while B has 0 - 200, 201 - 400 and C has 0 - 300, 301 - 600.)
最后,对于属于任何范围的每个组,他们将被分配一个最终编号。 (例如

目前我的索引匹配公式如下:

"=INDEX(finalnumber!F2:F29,MATCH(C11&C25,Group!A2:A29&valuerange!D2:D29,0))"
我一直收到一个不适用的答复

我还创建了一个数组表,如下所示:

"=INDEX(finalnumber!F2:F29,MATCH(C11&C25,Group!A2:A29&valuerange!D2:D29,0))"


请帮助!非常感谢!

我不清楚为什么您需要四个单独的工作表来执行此操作。为了便于演示,我将您的查找表与要查找的值放在同一工作表上

=SUMPRODUCT(I$2:I$7, (G$2:G$7=LEFT(A2))*(--REPLACE(H$2:H$7, FIND(" - ", H$2:H$7), 9, TEXT(,))<=--MID(A2, 3, 9))*
                                        (--REPLACE(H$2:H$7, 1, FIND(" - ", H$2:H$7)+1, TEXT(,))>=--MID(A2, 3, 9)))
=SUMPRODUCT(I$2:I$7,(G$2:G$7=左(A2))*(-REPLACE(H$2:H$7,FIND(“-”,H$2:H$7),9,TEXT(,)=-MID(A2,3,9)))

您可以使用以下内容(您需要根据布局进行调整)。例如,我假设
A
95
在公式中连接单元格进行查找时位于单独的单元格中

=IF(AND(ISERROR(INDEX(OFFSET(INDEX(C:C,H2),,,I2-H2+1,1),MATCH(VLOOKUP(G2,LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,TRUE),LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,0))),INDEX(A:A,COUNTA(A:A)+1)=F2,G2>=1*LEFT(INDEX(B:B,COUNTA(A:A)+1),FIND("-",INDEX(B:B,COUNTA(A:A)+1))-1),G2<=1*RIGHT(INDEX(B:B,COUNTA(A:A)+1),LEN(INDEX(B:B,COUNTA(A:A)+1)) - FIND("-",INDEX(B:B,COUNTA(A:A)+1)))),INDEX(C:C,COUNTA(A:A)+1),INDEX(OFFSET(INDEX(C:C,H2),,,I2-H2+1,1),MATCH(VLOOKUP(G2,LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,TRUE),LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,0)))

(2)I2-2-H2+1,(2)I2-2-2-2+1,1),匹配,匹配,匹配(vlookkup(G2,左(G2,左(偏移(偏移(索引(索引(B:B:B:B:B:B:B,H2,B,B,H2),匹配,匹配,匹配(vlook考考考考考考图(G2,左(G2,左(G2,左(G,左(偏移(偏移(偏移(索引(索引(索引(索引(B:B:B:B:B:B:B:B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,H2,B,B,B,B,B,H2),B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B A(A:A)+1),查找(“-”,索引(B:B,COUNTA(A:A)+1))-1),G2希望此表能够澄清!您的实际数据是什么样子的?您的查找范围应该是一张表,但您有两张被引用的表,这可能是问题的一部分(组!A2:A29&valuerange!D2:D29)@QHarr,是的,我也试过了。仍然会返回一个N/a响应。尝试获取索引/匹配以读取一个范围的值,例如0-100,因此公式可能会这样读:如果输入是组“a”,值是“105”,则最终的数字将给出一个“1.00”的输出提前谢谢!!哇,我不知道你做了什么,但非常感谢你!太好了,我不会想到用这样的替换。还有一个观察,你可以使用sumproduct,因为只有一行可以满足所有条件。很想知道你为什么用文本(,)而不是“”?在vba中编写工作表公式是一种习惯,同时不喜欢在带引号的字符串中使用
”。
=IF(AND(ISERROR(INDEX(OFFSET(INDEX(C:C,H2),,,I2-H2+1,1),MATCH(VLOOKUP(G2,LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,TRUE),LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,0))),INDEX(A:A,COUNTA(A:A)+1)=F2,G2>=1*LEFT(INDEX(B:B,COUNTA(A:A)+1),FIND("-",INDEX(B:B,COUNTA(A:A)+1))-1),G2<=1*RIGHT(INDEX(B:B,COUNTA(A:A)+1),LEN(INDEX(B:B,COUNTA(A:A)+1)) - FIND("-",INDEX(B:B,COUNTA(A:A)+1)))),INDEX(C:C,COUNTA(A:A)+1),INDEX(OFFSET(INDEX(C:C,H2),,,I2-H2+1,1),MATCH(VLOOKUP(G2,LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,TRUE),LEFT(OFFSET(INDEX(B:B,H2),,,I2-H2+1,1),FIND("-",OFFSET(INDEX(B:B,H2),,,I2-H2+1,1))-1)*1,0)))