如何获取VBA代码以检查单元格值是否与列标题匹配并从同一行中的另一个单元格返回值?

时间:2018-12-11 21:56:02

标签: excel vba loops range

我已经搜遍了所有内容,似乎无法正常工作。

我有2个工作表。

第1页包含测验问题编号,然后是每个对应q#的分数。

第二页包含每个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 :(得分:0)

我总是觉得DimWorkbookWorksheet的好习惯。如果您决定扩展,则已经设置好了。

无论有多少问题,以下代码本质上都会转置数据集。

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

让我知道你的生活。