2015-10-22 3 views
1

Я пытаюсь создать новую строку в листе 2, который состоит из значений из строки 1 в листе 1.Копировать определенный столбец заголовок нового листа, если он соответствует определенным критериям

листе1:

 A B  C  D  E  F 
1 Bob Sam Ken Allen Henry Ed 
2 Yes No Yes No  Yes  No

Мне нужна формула для создания строки 1 в Листе 2 с только теми значениями, где строка 2 = «Да».

Так Лист 2 будет выглядеть так:

 A B  C  D  E  F 
1 Bob Ken Henry 

Это динамически обновлять как данные в листе один обновляется.

+1

что вы пробовали до сих пор? – skypjack

+0

Вам нужен ответ VBA или будет работать формула? – BruceWayne

ответ

1

Используя эту формулу будет работать (ввести в A1 на листе 2 и перетащить справа)

=IF(Sheet1!A$2:$F$2="Yes",Sheet1!A$1:$F$1,"") Примечание: Введите в качестве массива, нажав CTRL + SHIFT + ENTER.

Редактировать: Я заметил, что приведенная выше формула оставит пробел между столбцами, имеющими эквивалент «нет». Я пытаюсь получить формулу, которая удаляет пробел, но все же позволяет перетащить право. Следующее делает это за исключением Я не могу понять, почему «Боб» в А1 не возвращается. Это начинается с «Сэма». (Также введите как массив)

=INDEX(Sheet1!$A1:$F1,SMALL(IF(Sheet1!$A2:$F2="Yes",COLUMN(Sheet1!$A1:$F1)-COLUMN(Sheet1!$A1)+1),COLUMNS(Sheet1!$A1:B1))) 

Любые идеи? Я подозреваю, что это связано с моим использованием Small(). Если вы измените его на Large() порядок, что она возвращает перевернуто

Вот таблица:

enter image description here

и вот что Sheet2 выглядит при использовании, что формула массива:

enter image description here . .. Что о Бобе ?!

(#num только потому, что больше нет совпадений. Просто выбросьте IfError([array formula], "") вокруг всего, чтобы удалить это).

Редактировать2: Получил! Используйте эту формулу, вводится как формула массива:

=IFERROR(INDEX(Sheet1!$A1:$F1,SMALL(IF(Sheet1!$A2:$F2="Yes",COLUMN(Sheet1!$A1:$F1)-COLUMN(Sheet1!$A1)+1),COLUMNS(Sheet1!$A1:A1))),"")

(Окончательный диапазон должен быть $A1:A1, не $A1:B1)

+0

Эта формула почти меня достает, но она оставляет пустые столбцы, когда нет ... есть ли все равно, чтобы создать данные в Листе 2 без пустых столбцов? – duger99

+0

@ duger99 - У моего редактирования есть формула, но, как я уже упоминал, по какой-то причине он не получает самого большого имени. :/Я буду продолжать пытаться заставить эту формулу работать. – BruceWayne

+0

Извините, BruceWayne, я, должно быть, набрал свой комментарий, когда вы разместили ...слишком плохо, я не могу использовать их в обратном порядке, он работает просто отлично :) Спасибо за то, что вы продолжаете пытаться понять это ... действительно оцените! – duger99

0

Для VBA, потому что это было в тегах, поместить это в рабочие данные, в которых находятся данные:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("2:2")) Is Nothing Then 
     Dim ws As Worksheet 
     Dim rng As Range 

     Set ws = Worksheets("Sheet5")'change to what ever sheet your want 

     Dim strArr() As Variant 
     ReDim strArr(0) 
     With Target.Parent 
      For Each rng In .Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight)) 
       If rng.Offset(1) = "Yes" Then 
        strArr(UBound(strArr)) = rng 
        ReDim Preserve strArr(UBound(strArr) + 1) As Variant 

       End If 
      Next rng 
     End With 
     If ubound(strArr) > 0 then 
      ReDim Preserve strArr(UBound(strArr) - 1) As Variant 
     End If 
     ws.Range("A1").Resize(, UBound(strArr) + 1).Value = strArr 
    End If 
End Sub 
+0

Эй, Скотт, я получаю сообщение об ошибке вне диапазона ... Мои ответы Да/Нет в раскрывающемся списке ... Это может вызвать ошибку с этой строкой кода «ReDim Preserve strArr (UBound (strArr) - 1) Как вариант « – duger99

+0

@ duger99 Я забыл разобраться с тем, что происходит, когда нет« Да ». См. Править. –

+0

Также потрясающе! Замечательно, что у меня есть варианты, так как это может усложниться, когда я пойду ... спасибо, что смотрел на меня с правой ноги. – duger99

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

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