2015-01-06 2 views
0

У меня есть два листа в моей книге - Лист1 и Лист2.Отображать значение заголовка столбца, если данные извлекаются из определенного столбца

Лист 1 имеет две колонки и шесть рядов.

A  B 
1 [MARK] [LUCY] 
2 100  120 
3 200  220 
4 300  320 
5 400  420 
6 500  520 

[Sheet1] 

Sheet2 имеет две колонки, которые я пытаюсь вытащить данные в из Лист1 с помощью оператора IF и ВПР.

В ячейке Sheet2-A2 Я вытаскиваю ссылку из любой ячейки листа 1 из строки 2 вниз. Так в следующем примере будет тянуть в значении 100:

A     B 
1 [VALUE]   [NAME] 
2 =Sheet1!A2 
3 
4 
5 

[Sheet2] 

В Sheet2-B2 я пытаюсь включить оператор IF, который говорит:

IF значение в ячейке Sheet2-A2 вытягивает из Sheet1-ColumnA, а затем распечатать значение MARK в ячейке Sheet2-B2.
Значение ПЧ в ячейке Sheet2-A3 тянет от Sheet1-ColumnB, затем распечатайте значение LUCY в ячейке Sheet2-B3.
Значение ПЧ в ячейке Sheet2-A4 тянет от Sheet1-ColumnA, затем распечатайте значение MARK в ячейке Sheet2-B4.

И так далее, так что результат выглядит примерно так:

A   B 
1 [VALUE]  [NAME] 
2 100   MARK 
3 220   LUCY 
4 400   MARK 
5 520   LUCY 

[Sheet2] 

я не уверен, если ВПР правильный способ сделать это так что любая помощь будет оценена. Благодаря!

+0

Вы всегда «тянете» данные с листа1 с формулой, приведенной в вашем примере? Являются ли значения в sheet1 col A всегда уникальными/числовыми? Значения в листе 1 col A всегда в порядке возрастания? – barryleajo

+0

1. Да всегда вытягивается из листа, 2. Да значения всегда будут уникальными и числовыми, 3. Нет, они не всегда в порядке возрастания ........... Я думаю, что его можно было бы решить, включив функцию поиска в ячейку «Sheet2-B2» ........... = IF (ISNUMBER (SEARCH («! A», A1)), Sheet1! A1,0) ........... Но я не могу понять, как искать символы в ячейке, если эти символы в формуле, а не просто прямые текст в ячейке ............ – Jimmy

ответ

0

формула для Sheet2B2: =IF(ISERROR(MATCH(A2,Sheet1!$A$2:$A$6,0)),Sheet1!$B$1,Sheet1!$A$1)

  • MATCH будет проверять, если A2 появится в значениях "Mark" s. 0 в «type» указывает точное совпадение. Если он не найден, он возвращает ошибку.
  • ISERROR возвращает true, если MATCH возвращает ошибку - то есть. когда значение в A2 принадлежит Люси.
  • IF возвращает «Mark», если false (MATCH NOT NOT) и «LUCY», если Match является ошибкой.
+0

Фантастический, он сработал! Большое спасибо за подробный прогон, это очень полезно. – Jimmy

0

Невозможно достичь этого без дополнительной колонки.

Sheet2

Row A    B   C 
1  Value   ReferTo Name 
2  =Sheet1!A2 Sheet1!A2 =INDIRECT(MID(B2,1,SEARCH("!",B2,1)+1) & "$1") 

Если вы хотите, чтобы добиться того, что без дополнительной колонки, вам нужно добавить кусок кода VBA.

  1. Перейти к VBA редактор кода (ALT + F11)
  2. Вставьте новый модуль (Меню-> Вставка-> Module)
  3. Скопируйте и вставьте ниже код

    Option Explicit 
    
    Function GetHeader(ByVal rng As Range, Optional HeaderRow As Integer = 1) As Variant 
    Dim i As Integer 
    
        'get referenced row 
        i = Range(rng.Formula).Row 
        i = (i - HeaderRow) * -1 
    
        GetHeader = Range(rng.Formula).Offset(RowOffset:=i).Value 
    
    End Function 
    
  4. Теперь иди к Лист2 и вставить формулу в В2 ячейка

    =GetHeader(A2) 
    

возвращает MARK или Lucy в зависимости от ячейки, на которую ссылается формула в A2 клетки.

0

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

 =IF(IF(ISERROR(MATCH(A1;Sheet1!$A$2:$A$12;0));0;Sheet1!$A$1)=0;IF(ISERROR(MATCH(A1;Sheet1!$B$2:$B$12;0));0;Sheet1!$B$1);IF(ISERROR(MATCH(A1;Sheet1!$A$2:$A$12;0));0;Sheet1!$A$1)) 

Что формула делает: она состоит из «если» заявления, которое проверяет, какой из двух «спичечных» формул возвращает то, что не равно нуль. Эти две «спички» формулы приведены ниже:

IF(ISERROR(MATCH(A1;Sheet1!$A$2:$A$12;0));0;Sheet1!$A$1) 
    IF(ISERROR(MATCH(A1;Sheet1!$B$2:$C$12;0));0;Sheet1!$B$1) 

Как проверить, является ли число в ячейке A1 (в sheet2) находится в любом столбце А или В (ограниченный диапазон) в sheet1. Соответственно, они возвращают либо заголовок колонки 1, либо заголовок столбца 2.

0

Если у вас есть Excel 2013, вы можете использовать FORMULATEXT для непосредственного изучения формулы в A2.

К сожалению, у меня нет, но вот еще одно предложение: -

=INDEX(Sheet1!$A$1:$B$1,SUMPRODUCT(COLUMN(Sheet1!$A$2:$B$6)*(Sheet1!$A$2:$B$6=A2))) 

Это делает поиск в диапазоне, находит какой столбец значение соответствия в, и использует его для индекса строки содержащие MARK и LUCY.

У этого есть потенциальное преимущество, что вы можете расширить его до более чем двух столбцов.

Смежные вопросы