Найти значение в другой таблице, вернуть индекс строки - PullRequest
1 голос
/ 24 июля 2011

Я неопытный в функциях Excel и мне нужна помощь в следующем сценарии:

Таблица I имеет 2 столбца:

X      Y 
3.2   result
4.7   result
1.2   result

Таблица II содержит следующие столбцы:

A    B    C    D
1   1.2  0.0  2.3
2   4.1  3.2  0.0
3   0.0  4.7  0.0

Я попытаюсь проиллюстрировать, что я хочу сделать в C ++ / C # / Синтаксис программирования Java:

В Y [1] я хочу сохранить:

foreach (int value in TableII)   //look for X[1] in Table 2
   if( value == X[1] ){          //when you find it, 
      return A[value.rowNumber]; //return the corresponding value from A
      //break;
   }

Вдругими словами, я хочу найти X [1] в таблице II (она всегда будет там и всегда только один раз) и вернуть соответствующее значение из столбца A [того же индекса, что и совпадение].

Я посмотрел на HLOOKUP, но это еще не все, что только одна команда.Пожалуйста, помогите.


[EDIT]

Я пробовал это =INDEX(Column1,IFERROR(MATCH(I2,Column2,0),IFERROR(MATCH(I2,Column3,0),IFERROR(MATCH(I2,Column4,0),IFERROR(MATCH(I2,Column5,0),IFERROR(MATCH(I2,Column6,0),IFERROR(MATCH(I2,Column7,0),IFERROR(MATCH(I2,Column8,0),MATCH(I2,Column9,0)))))))))

Но я получаю "больше уровней вложенности, чем допустимо в текущемформат файла "ошибка.Если я удаляю только один IFERROR(MATCH(I2,Column8,0), то это работает.Но мне нужны столбцы со 2 по 9, где столбец 1 содержит индекс.

Я думал, что в Excel 2007 и 2010 больше нет ограничений на вложение.Что дает?

(Для любого новичка в Excel, читающего это, «Столбец1» и т. Д. Создаются путем выбора столбца, щелчка правой кнопкой мыши на выбранном элементе и «Определить имя».)


[EDIT2]

Таким образом, я «решил» мою проблему с вложением, разделив формулу на 2 части, с +, и возвращая 0 в случае, если нет совпадения ни с одной стороны.Таким образом, у вас либо something + 0, либо 0 + something, так что это работает.

Вот формула, которую я сейчас использую:

    =INDEX(Column1, IFERROR(MATCH(I3,Column2,0),IFERROR(MATCH(I3,Column3,0),IFERROR(MATCH(I3,Column4,0),IFERROR(MATCH(I3,Column5,0),IFERROR(MATCH(I3,Column6,0),IFERROR(MATCH(I3,Column7,0),0))))))    
                    +     
                    IFERROR(MATCH(I3,Column8,0),IFERROR(MATCH(I3,Column9,0),0))
          )

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Вот возможная формула для Y (предполагается, что таблица I расположена в столбцах G: H)

=INDEX($A:$A,IFERROR(MATCH(G2,$B:$B,0),IFERROR(MATCH(G2,$C:$C,0),MATCH(G2,$D:$D,0))))

Обратите внимание, что функция IsError была введена в Ecel 2007

Если ваши таблицы действительноопределенные как таблицы Excel, которые вы можете использовать

=INDEX(Table2[Column1],IFERROR(MATCH([@X],Table2[Column2],0),IFERROR(MATCH([@X],Table2[Column3],0),MATCH([@X],Table2[Column4],0))))

(подставьте собственные таблицы и имена столбцов)

0 голосов
/ 30 октября 2012

Если ваши значения уникальны, вы можете использовать следующую формулу без необходимости вложения:

=INDEX(column1,SUMPRODUCT((Table2=G24)*ROW(Table2)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...