tinydragon
Thành viên mới

- Tham gia
- 1/11/13
- Bài viết
- 17
- Được thích
- 4
- Giới tính
- Nữ
Dear các anh, chị,
Em mới học VBA và cần ứng dụng vào công việc để xử lý data lớn. Em có tham khảo nhiều nguồn để viết đoạn code như bên dưới để tính toán dữ liệu từ nhiều file vào 1 file. Em có đính kèm file. Em mô tả như sau:
File sumif: file có code vba để lấy số liệu tính toán từ 3 file source còn lại. Đoạn code nằm ở module 2.
Vấn đề của em là:
1. Vòng lặp for của em nó ko chạy (nó chỉ tính được kết quả của 1 file ngày 18.1.19 thôi). Nhờ anh, chị chỉ ra giúp em lỗi ạ.
2. Em muốn lấy được biến n = số file excel em chọn đầu vào để Range kết quả trả ra linh hoạt hơn (thay vì A2:C2 thì có thể là "A2:"&offset(A2,0,n), ý tưởng là vậy ạ).
Em cảm ơn anh, chị nhiều ạ!
Trích code:
Sub sumifs_multiple_files()
Dim Filename As Variant
Dim i As Integer
Dim wb As Workbook
Dim Cell1 As Range, Cell2 As Range
Filename = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*", MultiSelect:=True)
If Not IsArray(Filename) Then Exit Sub
Application.ScreenUpdating = False
Set Cell1 = Sheets(3).Range("A2:C2")
Set Cell2 = Cell1.Offset(-1, 0)
For i = LBound(Filename) To UBound(Filename)
Set wb = Workbooks.Open(Filename(i))
Cell1.Value = Application.WorksheetFunction.SumIfs(wb.Sheets(1).Range("o
"), wb.Sheets(1).Range("f:f"), "c", wb.Sheets(1).Range("b:b"), "<>199")
Cell2.Value = wb.Sheets(1).Range("A2").Value
wb.Close
Next i
Application.ScreenUpdating = True
End Sub
Em mới học VBA và cần ứng dụng vào công việc để xử lý data lớn. Em có tham khảo nhiều nguồn để viết đoạn code như bên dưới để tính toán dữ liệu từ nhiều file vào 1 file. Em có đính kèm file. Em mô tả như sau:
File sumif: file có code vba để lấy số liệu tính toán từ 3 file source còn lại. Đoạn code nằm ở module 2.
Vấn đề của em là:
1. Vòng lặp for của em nó ko chạy (nó chỉ tính được kết quả của 1 file ngày 18.1.19 thôi). Nhờ anh, chị chỉ ra giúp em lỗi ạ.
2. Em muốn lấy được biến n = số file excel em chọn đầu vào để Range kết quả trả ra linh hoạt hơn (thay vì A2:C2 thì có thể là "A2:"&offset(A2,0,n), ý tưởng là vậy ạ).
Em cảm ơn anh, chị nhiều ạ!
Trích code:
Sub sumifs_multiple_files()
Dim Filename As Variant
Dim i As Integer
Dim wb As Workbook
Dim Cell1 As Range, Cell2 As Range
Filename = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*", MultiSelect:=True)
If Not IsArray(Filename) Then Exit Sub
Application.ScreenUpdating = False
Set Cell1 = Sheets(3).Range("A2:C2")
Set Cell2 = Cell1.Offset(-1, 0)
For i = LBound(Filename) To UBound(Filename)
Set wb = Workbooks.Open(Filename(i))
Cell1.Value = Application.WorksheetFunction.SumIfs(wb.Sheets(1).Range("o

Cell2.Value = wb.Sheets(1).Range("A2").Value
wb.Close
Next i
Application.ScreenUpdating = True
End Sub