|
よろしくお願いいたします。
以前、作業用データのセル範囲を、ファイル名が同じパスワード付のファイルの指定した箇所へコピーするという質問をさせていただきましたが、このたびこちらを応用して、VLOOKUPの式を組みたいと考えております。
まず、現在のマクロの内容は以下の通りです。
<詳細>
作業用データ(ファイル名は【作業】xxxxxxxxx(xは数字の桁)で始まる顧客名)のA,B,C,Dの4つのシートそれぞれからデータをコピーし、作業用のデータと同じ数字9ケタ+顧客名の提出用ファイル(ファイル名は、作業用データの【作業】を省いたxxxxxxxxxで始まる顧客名)のA,B,C,Dシートそれぞれの指定した箇所に値貼り付けする。
というもので、以下のようなコードが入っています。
*********************************
Option Explicit
Sub Sample3()
Dim fPath As String '元ブックのサーバパス
Dim tPath As String '先ブックのサーバパス
Dim z As Long
Dim shn As Variant
Dim myFso As Object
Dim myFiles As Object
Dim myFile As Object
Dim tCell As String
Dim fName As String
Dim fBook As Workbook
Dim tBook As Workbook
Dim xlRowMax As Long
Application.ScreenUpdating = False
Set myFso = CreateObject("Scripting.FileSystemObject")
fPath = "c:\Test1" '実際のサーバパス名に
tPath = "c:\Test2" '実際のサーバパス名に
xlRowMax = Rows.Count
For Each myFile In myFso.GetFolder(tPath).Files
fName = "【作業】" & myFile.Name
If LCase(myFso.GetExtensionName(myFile.Name)) = "xls" And _
myFso.FileExists(fPath & "\" & fName) Then
Set fBook = Workbooks.Open(fPath & "\" & fName)
Set tBook = Workbooks.Open(tPath & "\" & myFile.Name, Password:="abc")
For Each shn In Array("A", "B", "C", "D")
Select Case shn
Case "A"
tCell = "P5"
Case "B"
tCell = "C5"
Case "C"
tCell = "V5"
Case "D"
tCell = "N5"
End Select
With tBook.Worksheets(shn)
.Range(tCell & ":" & Split(.Range(tCell).Address, "$")(1) & xlRowMax).ClearContents
z = fBook.Sheets(shn).Range("G" & xlRowMax).End(xlUp).Row
If z >= 6 Then
.Range(tCell).Resize(z - 5).Value = _
fBook.Sheets(shn).Range("G6").Resize(z - 5).Value
End If
End With
Next
tBook.Close True
fBook.Close False
End If
Next
Set myFso = Nothing
Set fBook = Nothing
Set tBook = Nothing
Application.ScreenUpdating = True
MsgBox "処理が終了しました。"
*********************************
こちらを応用して、「作業用データを作るための処理」を行うにあたり、VLOOKUP式やDO LOOP〜などを使った記述を行いたいのですが、どの部分に記述すればよいか分からず、ご教示願えればと思います。
具体的にやりたい内容は以下の通りです。
1.作業用データには、VLOOKUP関数を使って項目ごとのランクが求められている。
(検索値の番号列があります。)
この参照元のデータは「前月度の作業用データ」で、前月度のA,B,C,Dのそれぞ
れのシートから、今月度の同じ名前のシート名のところに参照し、前月度にあっ
て、今月度にもあった項目には、前月のランクがそのまま参照され、前月度には
なかった項目には、わざと「#N/A」を表示させたい。
2.A,B,C,Dシートの項目数はシートによって変わる。また前月と今月でも項目数が変わる。
3.VLOOKUPで参照した後は、結果を値貼り付けにしておきたい。
以上になります。
分かりにくい説明で恐縮ですが、なにとぞよろしくお願いいたします。
|
|