Как автоматически заполнить обратную пару в Excel - PullRequest
0 голосов
/ 18 января 2019

У меня есть таблица, которая выглядит следующим образом:

enter image description here

В настоящее время я вручную ввожу значения «Y» и «N» в столбец «Значение» на основе исследований. Однако, чтобы сэкономить время, я хотел бы, чтобы значение для начальной пары было автоматически заполнено для его обратной пары. Например, я присвоил яблоку апельсиновому соединению значение «Y». Я хотел бы автоматически заполнить пары «апельсин - яблоко» с тем же значением «Y». Я думал о сопоставлении индексов, но он не учитывает комбинации пар. Любые мысли будут оценены.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вот формула рабочего листа.Предполагая заголовок в строке 1, данные, начинающиеся со строки 2 и Entity1, Entity2 и Value в столбцах A, B и C соответственно, помещают

=IFERROR(INDEX(C$2:C2,MATCH(B3&"$"&A3,A$2:A2&"$"&B$2:B2,0)),"")

в C3 в виде формулы массива (CTRL-SHIFT-ENTER) и заполните.

Пояснение

Формула выполняет индекс / сопоставление, как вы рассматривали.Для поисковой части совпадения Entity2 и Entity объединяются в одну строку.Существует необязательный разделитель $ между двумя двумя объектами (объяснено ниже).Для массива совпадения это Entity1 и Entity2, объединенные одним и тем же разделителем.Массив начинается в первой строке данных и заканчивается строкой над текущей строкой.

Если совпадение возвращает индекс, он подключается к INDEX вместе с массивом значений до текущего.Если при совпадении возвращается ошибка # ЗНАЧЕНИЕ, оно попадает в функцию IFERROR.

Разделитель Рассмотрим две пары Entity1 и Entity2, причем первая пара(щуки, пик) и второе существо (щука, говорить).Объединение любого из них без разделителя дает «пикос» и может привести к ошибочному совпадению.Разделитель защищает от этого.В качестве разделителя вы можете выбрать любую строку, которая не встречается в ваших данных.

Надеюсь, что это поможет

0 голосов
/ 18 января 2019

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

Как сказал Марк - у вас не должно быть столбца со смесью значений и формул (особенно, если он считывает сам по себе, тогда вы столкнетесь с проблемой рекурсии ) .

Option Explicit
Sub PopulateValue()

    Dim i As Long, j As Long

    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

        If Cells(i, 3).Value = "" Then

            'Look for a true match
            For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
                If i <> j Then
                    If Cells(i, 1).Value = Cells(j, 1).Value And _
                       Cells(i, 2).Value = Cells(j, 2).Value Then
                        If Cells(j, 3).Value <> "" Then
                            Cells(i, 3).Value = Cells(j, 3).Value
                            Exit For
                        End If
                    End If
                End If
            Next j

            'Look for a reverse match
            For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
                If i <> j Then
                    If Cells(i, 1).Value = Cells(j, 2).Value And _
                       Cells(i, 2).Value = Cells(j, 2).Value Then
                        If Cells(j, 3).Value <> "" Then
                            Cells(i, 3).Value = Cells(j, 3).Value
                            Exit For
                        End If
                    End If
                End If
            Next j
        End If
    Next i

End Sub

img1

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