Условная ссылка на значения из одного листа на другой в Excel с использованием VBA - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть книга Excel с различными листами данных, и я пытаюсь написать формулу, которая заполняет информацию с одного листа TVUPDATED на другой TVUPDATED2.

Проблема в том, что TVUPDATED регулярно обновляется и когда это так, порядок таблицы меняется. Размер таблицы составляет 12x16 (RX C) с заголовками, а первые два столбца в крайнем левом углу содержат два тега идентификатора / категориальные переменные, которые различают guish все числовые значения в ячейках для право на них. В первом столбце есть только 2 разных тега, а во втором - 6 (всего 11 уникальных комбинаций).

Учитывая, что порядок таблицы в TVUPDATED постоянно меняется, кто-нибудь может предложить какой-нибудь код VBA или формулу Excel, которую я мог бы использовать, чтобы получить значения из таблицы в заданную c ячейку в TVUPDATED

Я попробовал свои силы в VBA:

Sub formular()

Dim name As Range
Dim produce As Range
Dim TV As Worksheet
Dim TV_UPDATED Worksheet
Dim TV_UPDATED2 As Worksheet
Dim Wokbuk As Workbook


Set Wokbuk = Workbooks("BookofWok.xlsx")
Set TV = Workbooks("BookofWok.xlsx").Worksheets("TV Summary")
Set TV_UPDATED = Workbooks("BookofWok.xlsx").Worksheets("U1")
Set TV_UPDATED2 = Workbooks("BookofWok.xlsx").Worksheets("U2")

For Each name In TV.Range("a2:a12")
    If name.Value = "reezy plc" Then
        For Each produce In TV.Range("b2:b12")
            If produce.Value = "duce1" Then
                TV_UPDATED.Range("D4") = produce.Address().Offset(0, 1)
            Elseif produce.value = "duce2" Then
                TV_UPDATED.Range("D6") = produce.Address().Offset(0, 1)
            Elseif produce.value = "duce3" Then
                TV_UPDATED.Range("D7") = produce.Address().Offset(0, 1)
            Elseif produce.value = "duce4" Then
                TV_UPDATED.Range("D8") = produce.Address().Offset(0, 1)
            End If
    Next produce
    Elseif name.value = "yung plc" Then
        For Each produce In U2.Range("b2:b12")
            If produce.Value = "duce1" Then
                TV_UPDATED2.Range("D4") = produce.Address().Offset(0, 1)
            Elseif produce.value = "duce2" Then
                TV_UPDATED2.Range("D6") = produce.Address().Offset(0, 1)
            Elseif produce.value = "duce3" Then
                TV_UPDATED2.Range("D7") = produce.Address().Offset(0, 1)
            Elseif produce.value = "duce4" Then
                TV_UPDATED2 .Range("D8") = produce.Address().Offset(0, 1)
            Elseif produce.value = "" Then
                TV_UPDATED2.Range("D9") = produce.Address().Offset(0, 1)
            End If

        Next
    End If
Next
End Sub
...