Excel ввести таблицу на основе сопоставленной строки и сопоставленного столбца - PullRequest
0 голосов
/ 20 ноября 2018

В основном я пытаюсь создать вкладку «Ввод данных».У меня есть два поля ввода для проверки данных, которые динамически извлекают данные из таблицы.Индексы первой ячейки основаны на фамилии людей (Таблица2 [LAST]).Вторая ячейка индексирует Table1 [#HEADERS].Несмотря на то, что все в порядке, мне нужно войти в ячейку рабочего листа, где эти два пересекаются, и превратить эту пересеченную ячейку в данные из ячейки на моем листе ввода данных.

Ячейка "B2" на рабочем листе 1 - проверка данныхСписок типов с раскрывающимся списком из Таблицы 2 [Последний] (в рабочем листе 2)

Ячейка "C2" на рабочем листе 1 представляет собой список типов проверки данных с раскрывающимся списком из Таблицы 1 [#HEADERS] (В рабочем листе 2)

Ячейка "D2 «на рабочем листе 1» - это тип проверки данных «Дата», который будет помещен в пересекающуюся ячейку рабочего листа 2, когда я нажму кнопку.Приведенный ниже код - это то, что я нашел и собрал воедино, и я просто не могу понять, почему он не работает в последней строке.

Sub Button5_Click()

    Dim wsInfo As Worksheet: Set wsInfo = Worksheets("worksheet2")
    Dim lookupRange As Range
    Dim matchval As Range
    Dim indexVar As Long
    Dim myVal As Variant
    Dim matchval2 As Range
    Dim lookuprange2 As Range

    Set matchval = Sheets("worksheet1").Range("B2")
    Set lookupRange = wsInfo.Range("Table2[LAST]")
    If Not Application.WorksheetFunction.Sum(lookupRange) = 0 Then
        indexVar = Range(Application.Index(lookupRange, Application.Match(matchval, lookupRange))).Row
    End If

    Set matchval2 = Sheets("worksheet1").Range("B3")
    Set lookuprange2 = wsInfo.Range("Table1[#HEADERS]")
    If Not Application.WorksheetFunction.Sum(lookupRange) = 0 Then
        columnVar = Range(Application.Index(lookupRange, Application.Match(matchval2, lookuprange2))).Column
    End If

    wsInfo.Cells(indexVar, columnVar) = Sheets("worksheet1").Cells(2, "D").Value
End Sub

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

1 Ответ

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

Спасибо SJR за то, что указал мне правильное направление.

Sub Button5_Click()

    Dim wsInfo As Worksheet: Set wsInfo = Worksheets("worksheet2")
    Dim pltws As Worksheet: Set pltws = Worksheets("Data Entry Tab")
    Dim lookupRange As Range
    Dim myVal As Variant
    Dim lookuprange2 As Range

    'Set row value to look for
    matchval = pltws.Cells(2, "B").Value
    'Set column to look in
    Set lookupRange = wsInfo.Range("Table2[LAST]")
    'Set column value to look for
    matchval2 = pltws.Cells(2, "C").Value
    'Set row to look in
    Set lookuprange2 = wsInfo.Range("Table1[#HEADERS]")

    'Returns row (Relative to the actual range provided, not the worksheet) that data is found on
    indexVar = Application.Match(matchval, lookupRange, 0)
    'Returns column (Also relative to the range provided, not the worksheet) that the data is found in
    columnVar = Application.Match(matchval2, lookuprange2, 0)

    'Have to offset to account for actual tables position in the worksheet.
    wsInfo.Cells(indexVar + 3, columnVar + 3).Value = pltws.Cells(2, "D").Value

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