คือผมเขียน VBA เพื่อเปิดไฟล์ excel อื่นขึ้นมา แล้วvlookupชีทงานปัจจุบันกับไฟล์ excel ที่เปิด code ดังนี้คับ
Code: Select all
Sub Apr()
Dim CrntWorkBook As Workbook
Dim SourceBook As Workbook
Dim SourceRange As Range
Dim Destination As Range
Set CrntWorkBook = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
.Title = "File "
.InitialFileName = ThisWorkbook.Path & " \ "
.Filters.Clear
.Filters.Add "Excel Files", "*.xl*;*.xm*"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count > 0 Then
Workbooks.Open .SelectedItems(1)
Set SourceBook = ActiveWorkbook
Sheets("IFCN Sale Amount").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Raw Data 3 Y].[Month].[Month]").VisibleItemsList = Array("")
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Raw Data 3 Y].[Month].[Month]").VisibleItemsList = Array( _
"[Raw Data 3 Y].[Month].&[04]")
CrntWorkBook.Activate
ActiveWindow.SmallScroll Down:=-38
Range("P6").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(VLOOKUP([@Area],'[1_ReportSOS.xlsx]FOM'!C2:C3,2,0),0)"
Range("P6").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=38
Range("P6:P70").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("P6:P70").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceBook.Close False
End If
End With
End Sub
อธิบายคร่าวๆว่า
- เมื่อเปิด macro ขึ้น Excel จะมี Dialog ถามว่าจะเปิดไฟล์excel ไฟล์ไหน
- เมื่อเปิดแล้วจะทำการ Vlookup ชีทงานปัจจุบันกับตารางใน ไฟล์excelที่เปิดด้วยmacro
ทีนี้ตรงบรรทัด "=IFERROR(VLOOKUP([@Area],'[1_ReportSOS.xlsx]FOM'!C2:C3,2,0),0)"
ตรง [1_ReportSOS.xlsx] :ซึ่งเป็นชื่อไฟล์ ผมจะเปลี่ยนตรงนี้ให้เป็นชื่อที่ตรงกับ ชื่อไฟล์excelที่ผมเปิดยังไงอ่ะคับ เช่น ถ้าเปิดไฟล์ชื่อ FFF.xls ก็ให้สูตรเป็น FFF.xls ด้วย
รบกวนทีนะคับ