Excel vba用于列a上的范围复制不同列的值

Excel vba用于列a上的范围复制不同列的值,excel,vba,Excel,Vba,我正在创建一个新的access数据库,以便为几个用户的测试结果导入我在excel中管理的数据。但是,由于布局以及列和文件的数量,我拥有的excel文件很难手动准备导入文件。这就是为什么我一直在寻找任何vba代码来完成这项工作:) 该文件在A列中包含测试引用,然后在每列中包含一个用户的名称和每个测试的相应分数。我需要为每个用户名以及后续块中的所有测试参考和分数进行复制,因此只需使用3列,一列为用户名,然后是测试参考,最后是测试分数 我认为这还不太清楚(但无法更好地解释,对不起),所以让我上传两张当

我正在创建一个新的access数据库,以便为几个用户的测试结果导入我在excel中管理的数据。但是,由于布局以及列和文件的数量,我拥有的excel文件很难手动准备导入文件。这就是为什么我一直在寻找任何vba代码来完成这项工作:)

该文件在A列中包含测试引用,然后在每列中包含一个用户的名称和每个测试的相应分数。我需要为每个用户名以及后续块中的所有测试参考和分数进行复制,因此只需使用3列,一列为用户名,然后是测试参考,最后是测试分数

我认为这还不太清楚(但无法更好地解释,对不起),所以让我上传两张当前工作表数据的示例图片,以及运行代码后数据应该如何显示

先谢谢你

当前图纸数据

运行代码后数据应如何查看

好的,这应该可以像您正在寻找的那样循环。这有点僵硬,因为我对你的书的布局不太了解。现在,它假设
Sheets(1)
是源,而
Sheets(2)
是目的地

Sub test()

    Dim lastCol As Long
    lastCol = Sheets(1).Cells(2, Columns.count).End(xlToLeft).Column

    Dim col As Long
    For col = 2 To lastCol
        userLoop (col)
    Next col

End Sub

Sub userLoop(ByVal col As Long)

    Dim lastRow_sheet1 As Long
    lastRow_sheet1 = Sheets(1).Cells(Rows.count, "A").End(xlUp).row

    Dim lastRow_sheet2 As Long
    lastRow_sheet2 = Sheets(2).Cells(Rows.count, "A").End(xlUp).row + 1
    If lastRow_sheet2 = 1 Then lastRow_sheet2 = 2

    Dim i As Long
    For i = 2 To lastRow_sheet1
        With Sheets(2)
            .Cells(lastRow_sheet2, "A").Value2 = Sheets(1).Cells(1, col).Value2
            .Cells(lastRow_sheet2, "B").Value2 = Sheets(1).Cells(i, "A").Value2
            .Cells(lastRow_sheet2, "C").Value2 = Sheets(1).Cells(i, col).Value2
        End With

        lastRow_sheet2 = lastRow_sheet2 + 1
    Next i

End Sub

你能发布你尝试过的东西吗?对不起,我没有尝试过自动化,因为我基本上没有vba/宏知识。哇,非常感谢@Marcucciboy2。。这使工作顺利进行。我刚刚做了一些修改,以指向正确的列和行,但效果非常好:)@DavidR感谢您的提醒,做了这些更改:)