VBAで任務を遂行する

1400 ワード

クラスの班長のせいで、クラスのいろいろな雑用は私がやらなければなりません.今学期が始まったばかりなのに、指導員は私にクラスの同級生の卒業情報(私たちは卒業クラス)をチェックしてほしいと言った.実は名前、学号、身分証明書番号、生源地、生源地コードなどだ.生源地はすぐに3600個以上あるので、私は一つ一つexcelで探すのが面倒で、他の情報もコピーしなければならない、という雑用です.だから私は1つのシナリオでこの任务を完成することができるかどうかを思って、もともとPythonのexcelモジュールを使うつもりで、しかしダウンロードした后に配置するのが面倒で、VBAに回転して、私は以前もVBAを使ったことがなくて、所も今売っています.コードは次のとおりです.
Sub auto()
'
' auto  
'
Dim ws_src As Worksheet
Dim ws_dst As Worksheet
Dim ws_addr As Worksheet

Dim i As Integer
Dim j As Integer

Set ws_addr = ThisWorkbook.Worksheets(4)
Set ws_src = ThisWorkbook.Worksheets(1)
'Get the worksheets from the workbooks
Set wbkA = Workbooks.Open(Filename:="C:\Users\mark\Desktop\info.xlsx")
Set ws_dst = wbkA.Worksheets("Sheet1")
For i = 4 To 54
    For j = 2 To 3
    ws_src.Cells(i - 1, j).Value = ws_dst.Cells(i, j).Value
    Next
Next
For i = 4 To 54
    For j = 7 To 9
    ws_src.Cells(i - 1, j + 3).Value = ws_dst.Cells(i, j).Value
    Next
Next
Set dict = CreateObject("Scripting.Dictionary")
For i = 2 To 3638
    dict.Add ws_addr.Cells(i, 2).Value, ws_addr.Cells(i, 1).Value
Next
For i = 3 To 53
    If dict.Exists(ws_src.Cells(i, 14).Value) Then
        ws_src.Cells(i, 13).Value = dict.Item(ws_src.Cells(i, 14).Value)
    End If
Next
Set dict = Nothing
End Sub

複雑ではありませんが、これ以上簡単な循環はできません.条件論理です.辞書の構造がハイライトかもしれませんが、VBAにはC++Mapのような構造があり、確かに便利です.