Как получить код VBA, чтобы проверить, соответствует ли значение ячейки заголовку столбца и вернуть значение из другой ячейки в той же строке? - PullRequest
0 голосов
/ 12 декабря 2018

Я искал все и не могу заставить эту работу работать.

У меня есть 2 рабочих листа.

Лист 1 содержит номера вопросов теста, а затем оценку для каждого соответствующего q #.

Лист 2 содержит каждый q # в качестве заголовков столбцов, и я хотел бы, чтобы код VBA захватилоценка от q #, которая соответствует правильному заголовку.

Например:

Лист 1

Question#      Score 
1               100
2                90
3                75
4                95

Лист 2

Q1    Q2    Q3   Q4 
100   90    75   95

Заголовки столбцов в Листе 2 можно изменить, просто сказав "1 "," 2 "и т. Д., Так что может быть точное совпадение, если это облегчает.

Я нашел и поиграл с этим кодом, но он копирует весь столбец, если находит совпадение, которое не работает:

Sub CopyDataDynamically()
Dim lr As Long, num As Long
Dim rng As Range
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("a2")
num = Range("b2").Value
If num = 1 Then
    Range("B2:B" & lr).Copy
    rng.Offset(0, num - 1).PasteSpecial xlPasteValues
End If
End Sub

Заранее спасибо!

1 Ответ

0 голосов
/ 12 декабря 2018

Я всегда считаю хорошей практикой Dim ваши Workbook и Worksheet.Если вы решили расширить, вы уже настроены.

Следующий код по существу транспонирует набор данных, независимо от того, сколько вопросов.

Sub test()


Dim wbk As Workbook
Dim wks_1 As Worksheet
Dim wks_2 As Worksheet

    Set wbk = ThisWorkbook
    Set wks_1 = wbk.Sheets("Sheet1")
    Set wks_2 = wbk.Sheets("Sheet2")

    LastRow = wks_1.Range("A" & Rows.Count).End(xlUp).Row

    For i = 1 To LastRow
        wks_1.Cells(i, 1).Copy wks_2.Cells(1, i)
        wks_1.Cells(i, 2).Copy wks_2.Cells(2, i)
    Next i


End Sub

Он также скопирует заголовки.

Во-первых, я хочу знать, где находится последняя строка, отсюда и код LastRow.Затем мы просто перебираем все строки и транспонируем набор данных.

Ссылка .Cells в строке wks_1.Cells(i, 1).Copy wks_2.Cells(1, i) всегда ссылается Row затем Col.

Дайте мне знать, как выидти.

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