Excel |Индекс соответствия | - PullRequest
0 голосов
/ 10 июня 2018

Мне нужна ваша помощь по следующим вопросам:

Допустим, у нас есть 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.)

В конце каждой группе, попадающей в какой-либо диапазон, им присваивается окончательный номер.(Например,

[A,95] = 0.5 / [A,101] = 1.0
[B,95] = 1.5 / [B,205] = 3.0
[C,95] = 4.5 / [C,308] = 6.0)

В настоящее время у меня есть моя формула соответствия индекса:

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

Я продолжаю получать # N / A ответ.

У меня также естьсоздал таблицу массивов следующим образом:

введите описание изображения здесь

Group    Range    Final Number
A        0 - 100      0.50
A        101 - 200    1.00
B        0 - 200      1.50
B        201 - 400    3.00
C        0 - 300      4.50
C        301 - 600    6.00

Просьба помочь! Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вы можете использовать следующее (вам нужно будет настроить ваш макет).Я предположил, что 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)))

Это вводится как формула массива с Ctrl + Shift + Введите

Формулы в вспомогательных ячейках (чтобы общая формула была более разборчивой):

H2 is =MATCH(F2,A:A,0) 'находит первое совпадение для буквы, например, A

I2 is =MAX(IF(A:A=F2,ROW(A:A)-ROW(INDEX(A:A,1,1))+1))' находит последнее совпадение для буквы, например A.Это вводится с помощью Ctrl + Shift + Введите т.е. формула массива.


Структура данных

data

Пример прогона:

test run


Примечания:

Выможет потребоваться обернуть все это в IFERROR( formula, ""), чтобы скрыть все не найденные сообщения об ошибках.

0 голосов
/ 10 июня 2018

Мне непонятно, зачем вам нужны четыре отдельных листа для этой операции.Для простоты демонстрации я поместил вашу таблицу поиска на тот же рабочий лист, что и значения для поиска.

=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)))

enter image description here

...