Mình có 3 file từ ngày 01 đến ngày 03. Mình muốn lấy dữ liệu của SP2 tại sheets 1 trong 3 ngày đó vào file tổng hợp. Mong các bạn giúp đỡ
Thành thật xin lỗi bạn, mình post nhầm file. Mình đã sửa lại mong bạn xử lý giúpChào bagiacom,
Trong file đính kèm ở bài #1 có 4 file "DU LIEU 1,2,3,4" và 1 file "DU LIEU TONG HOP". Vậy bạn cần dữ liệu từ 3 file nào?
Ngoài ra, trong cả 4 file "DU LIEU" trên không tìm thấy SP2 nằm ở đâu.
Thứ nữa, đây là ví dụ minh họa. Làm xong bạn có chắc là khớp với dữ liệu thật của bạn.
Bạn xem lại dùm nhé.
Thành thật xin lỗi bạn, mình post nhầm file. Mình đã sửa lại mong bạn xử lý giúp
Sub TongHopSP2()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim i As Integer, Ipath As String, iName()
Dim kq As Range, rng As Range, lr As Long, tmp(), sh As Worksheet, ngay
Dim dk As String: dk = ThisWorkbook.Name
Dim ten As String: ten = "SP2"
Set sh = ThisWorkbook.Sheets(1)
Ipath = GetFolder("")
If Ipath = "" Then Exit Sub
iName = GetFileList(Ipath)
sh.Range("A4:Y" & sh.Range("A65000").End(3).Row + 1).Clear ' // Xoa du lieu da co.
For i = 1 To UBound(iName)
If iName(i) <> dk Then
Workbooks.Open Filename:=Ipath & "\" & iName(i), ReadOnly:=True
With ActiveWorkbook.Sheets(1)
lr = .Range("A65000").End(3).Row
Set rng = .Range("A5:A" & lr)
Set kq = rng.Find(ten, .Range("A5"), xlValues)
tmp = kq.Offset(0, 1).Resize(1, 24).Value
ngay = Right(.Range("A2").Value, 2)
End With
Workbooks(iName(i)).Close
sh.Range("B" & sh.Range("B65000").End(3).Row + 1).Resize(1, 24).Value = tmp
sh.Range("A" & sh.Range("A65000").End(3).Row + 1).NumberFormat = "@"
sh.Range("A" & sh.Range("A65000").End(3).Row + 1).Value = Format(ngay, "0#")
End If
Next
sh.Range("A4:Y" & sh.Range("A65000").End(3).Row).Borders.LineStyle = xlContinuous
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = strPath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
'************************
' // by quanghai1969 /GPE
Function GetFileList(ByVal StrFolder As String)
Dim fso As Object, ObjFile As Object
Dim Res(), K As Long
Set fso = CreateObject("Scripting.FileSystemObject")
With fso.GetFolder(StrFolder)
For Each ObjFile In .Files
If fso.GetExtensionName(ObjFile) Like "xls*" Then
K = K + 1
ReDim Preserve Res(1 To K)
Res(K) = ObjFile.Name
End If
Next
End With
GetFileList = Res
End Function
Bạn cho mình hỏi nếu mình muốn tìm kiếm và lấy dữ liệu trong khoảng từ A6 đến Y8 thì sửa code như thế nào? Chân thành cẩm ơn bạn
Chào bạn hiền!Sau 05 ngày bạn đã quay trở lại và ... yêu cầu nhiều hơn xưa
Bạn muốn tìm kiếm CÁI GÌ và LẤY CÁI GÌ trong A6:Y8?
Chào bạn hiền!
Dân kế toán có khác! đếm kỹ từng ngày luôn
Chúc befaint ngày vui.
p/s không quậy được befaint khó chịu trong người, chỉ tiếc là không đủ trí lực tham gia nhóm VBA![]()
Xin lỗi bác, tại công việc của em bận quá, cứ việc này việc kia, định hỏi bác chút ít nhưng đã sửa được rồi. Chân thành cảm ơn bác, hẹn một ngày không xaSau 05 ngày bạn đã quay trở lại và ... yêu cầu nhiều hơn xưa
Bạn muốn tìm kiếm CÁI GÌ và LẤY CÁI GÌ trong A6:Y8?