Возвращая результат Sheet1.ColumnB в Sheet2.ColumnB, учитывая, что определенное значение существует в любой ячейке для Sheet1.ColumnC - PullRequest
0 голосов
/ 08 ноября 2018

Итак, у меня проблема. У меня есть что-то похожее на это на Листе 1, где у меня есть несколько экземпляров одного и того же термина с разными (или иногда несуществующими) определениями:

     Term Name    Definition      Chosen Definition?           
     Account      The account.      
     Account      
     Account      An account name.        x

Sheet2 - это справочный лист со всеми уникальными именами терминов, но без определений.

    Term Name     Definition
    Account
    Product
    Customer

Поскольку у меня так много дубликатов одного и того же термина в Листе 1, я пытаюсь написать что-то, где я могу просто поставить «х» в третьем столбце («Выбранное определение?»), Чтобы отметить определение, которое я выбрал и он возьмет соседнюю ячейку определения из Sheet1 (в столбце B) и поместит ее в нужное место в Sheet2 следующим образом:

    Term Name     Definition
    Account       An account name.
    Product
    Customer

Я предполагаю, что это будет сделано либо путем объединения чего-то вроде оператора IF, оператора AND и VLOOKUP, либо в VBA (в которой я вообще не являюсь экспертом). Я испробовал оба метода и чувствую, что подобрался несколько ближе, но не совсем там. Вот мой код VBA:

    Sub InputData()
        Dim c as Range
        Dim j as Integer
        Dim Source as Worksheet
        Dim Target as Worksheet

        Set Source = ActiveWorkbook.Worksheets("Sheet1")
        Set Target = ActiveWorkbook.Worksheets("Sheet2")

        j = 2
        For Each c in Source.Range("C3:C1000")
            If c = "x"
                Source.Rows(c.Rows).Copy Target.Rows(j)
                j = j + 1
            End If
        Next c
    End Sub

Это просто помещает любую строку с 'x' в столбец C в начале Листа 2:

    Term Name     Definition
    Account       An account name.
    Account
    Product
    Customer

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

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете использовать формулу. Например, в C2 sheet2, с вашими данными, как показано в A1: C4 sheet1

=INDEX(Sheet1!$B$2:$B$4,MATCH(A2&"x",Sheet1!$A$2:$A$4&Sheet1!$C$2:$C$4,0))

Введите как формулу массива с помощью Ctrl + Shift + Enter

enter image description here

Вы можете заключить в IFERROR(formula,""), чтобы скрыть любые несоответствия.

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