2013-07-17 6 views
1

Возможно, я слишком много прошу об этом, но это также является частью требования, над которым я работаю из таблицы excel ниже. Я бы хотел найти значение определенной ячейки, если я даю два разных значения, и я хотел бы достичь этого с помощью OFFSET, MATCH, INDEX функций в excel.Формула Excel для значения ячейки на основе значений двух ячеек

Есть два сценария

Сценарий 1:

Если я дам Value1 = 3500 (который не находится в первой колонке) и value2 = 75 result1 = 1,59 и result2 = 1,89

Сценарий 2:

Если я дам значение1 = 3500 и значение2 = 85 (оба значения не находятся в первая строка и первый столбец сетки) полученное значение должно быть result1 = 1,59, result2 = 1,89, Result3 = 1,51, Result4 = 1.81`

Как можно достичь этого в рамках Excel?

Measure |2.5 |5  |10  |25  |50  |75  |100 |150 |200  
250  |0.835 |0.75 |0.69 |0.6 |0.528 |0.455 |0.383 |0.314 |0.245 
500  |1.044 |0.938 |0.863 |0.75 |0.675 |0.6 |0.525 |0.451 |0.378 
1000 |1.391 |1.25 |1.15 |1  |0.923 |0.845 |0.768 |0.689 |0.61 
2000 |1.948 |1.75 |1.52 |1.4 |1.321 |1.243 |1.164 |1.083 |1.002 
3000 |2.435 |2.188 |1.95 |1.75 |1.67 |1.59 |1.51 |1.426 |1.343 
4000 |2.853 |2.563 |2.3 |2.05 |1.97 |1.89 |1.81 |1.726 |1.643 
5000 |3.507 |3.15 |2.675 |2.4 |2.269 |2.188 |2.107 |2.021 |1.936 
10000 |  |4.553 |4  |3.72 |3.56 |3.477 |3.394 |3.304 |3.215 
15000 |  |5.691 |5  |4.6 |4.469 |4.385 |4.301 |4.209 |4.117 
20000 |  |6.545 |5.8 |5.3 |5.151 |5.066 |4.981 |4.888 |4.795 
25000 |  |7.527 |6.4 |5.83 |5.666 |5.573 |5.48 |5.377 |5.274 
50000 |  |9.785 |8.32 |7.579 |7.366 |7.245 |7.123 |6.99 |6.856 
+0

Начните с сравнения результатов точного MATCH() (последний параметр = 0) с одним, использующим 1 в качестве последнего параметра: если первая возвращает ошибку, то вы знаете, что вам нужно вернуть несколько значений (для вторых значений в каждом прямо добавьте 1 к значениям, которые вы передаете в 'OFFSET()') –

ответ

0

Если предположить, что учебное пособие помещается в указанном диапазоне измерения (В2: J13), значение 1 (В15) и значение 2 (B16), то формулы:

=INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1),MATCH(Value_2,$B$1:$J$1,1)) 
=INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1),MATCH(Value_2,$B$1:$J$1,1)+1) 
=INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1)+1,MATCH(Value_2,$B$1:$J$1,1)) 
=INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1)+1,MATCH(Value_2,$B$1:$J$1,1)+1) 

вернет нужные вам значения. Используйте функцию MATCH для выбора строки, выборочно смещайте ее с помощью + 1 (или аналогичного), а затем используйте INDEX, чтобы выбрать элемент в таблице.

Расположение стола является косметическим. Ничто не мешает ярлыкам столбцов и строк находиться в другом месте целиком.Именованные диапазоны ссылаются на входные значения.

Дополнительные входные значения 1000, 10 возвращают результаты 1.15, 1, 1.52, 1.4.

+0

Это, кажется, довольно далеко. Например: 1.321, 1.243, 1.670, 1.590 для сценария 2, то же самое для сценария 1 и опять же для третьего сценария (3000 и 75). – pnuts

+0

Я воссоздал книгу и подтвердил, что она вернет правильные результаты с исправленным диапазоном. Я получаю ваши результаты, если диапазон Measure named начинается с A1 вместо B2, как и предполагалось. – Pekka

+0

Согласны ли вы, что правильный результат для [1000,10], например, должен быть 1,15 (и ваши формулы в этом случае дают [1,15,1,1,52,1,4]? – pnuts

0

В случае, если это помогает, следующие формулы кажутся для отображения значений в углах, предполагая, что Мера является именованный диапазон Отправной в A1 и значение1 и значение2 названы диапазоны:

= INDEX (Мера, ЕСЛИОШИБКА (ПОИСКПОЗ (значение1, А: А, 0), ПОИСКПОЗ (значение1, А: А, 1)), ЕСЛИОШИБКА (MATCH (value2,1: 1,0), ПОИСКПОЗ (value2,1: 1,1)))

= INDEX (измерение, IFERROR (значение 1, A: A, 0), MATCH (значение1, A: A, 1)), IFERROR (MATCH (значение2,1: 1,0), MATCH (значение2,1: 1,1) +1))

= INDEX (измерение, IFERROR (MATCH (значение1, A: A, 0), MATCH (значение1, A: A, 1) +1), IFERROR (MATCH (значение2,1: 1,0), MATCH (значение2 , 1: 1,1)))

= INDEX (измерение, IFERROR (значение 1, A: A, 0), MATCH (значение1, A: A, 1) +1), IFERROR (MATCH (значение2 , 1: 1,0), MATCH (value2,1: 1,1) +1))

0

Не совсем то, что вы хотите, но вот моя попытка:

Введите следующую формулу для B19, то копия & паста ко всей ячейке в зеленом столе.

=IF(OR(AND($B$15=$A19,$B$16=B$18),AND($B$15>$A18,$B$15<$A20,$B$16>A$18,$B$16<C$18)),B2,0)

enter image description here

+1

Истинно, что OP сказал: «Я хотел бы достичь этого с помощью функций OFFSET, MATCH, INDEX», но IMO - хорошее решение, которое не следует сбрасывать со счета на простоту , – pnuts

1

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

Это один из многих возможных подходов к этому вопросу:

Предположит таблицу Measure находится в диапазоне А1: J13 из листа Excel, значение 1 находится в ячейке А16, Value 2 находится в ячейке C16, а значения результатов от 1 до 4 сохраняются в диапазоне ячеек E16: F17, тогда мы можем использовать следующие формулы в Excel 2010/2013 для извлечения необходимой вам информации:

В ячейке E16 (ячейка, хранящая значение для результата 1), введите следующую формулу:

=IF(AND(IFERROR(MATCH(A16,A1:A13,0),FALSE), IFERROR(MATCH(C16,A1:J1,0),FALSE)),INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,0)-1),(MATCH(C16,A1:J1,0)-1))),1,1), INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)-1),(MATCH(C16,A1:J1,1)-1))),1,1)) 

В ячейке Е17 (ячейки, хранящей значение для результата 2), введите следующую формулу:

=IF((IFERROR(MATCH(A16,A1:A13,0),FALSE))," ", INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)),(MATCH(C16,A1:J1,1)-1))),1,1)) 

В ячейке F16 (ячейка запоминания значения для результата 3), введите следующую формулу:

=IF((IFERROR(MATCH(C16,A1:J1,0),FALSE)),"",INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)-1),(MATCH(C16,A1:J1,1)))),1,1)) 

В ячейке F17 (ячейка запоминания значения для результата 4), введите следующую формулу:

=IF(AND(IFERROR(MATCH(A16,A1:A13,0),FALSE)=FALSE, IFERROR(MATCH(C16,A1:J1,0),FALSE)=FALSE),INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)),(MATCH(C16,A1:J1,1)))),1,1)," ") 
Смежные вопросы