vuongtoituonglai
Thành viên thường trực




- Tham gia
- 7/5/14
- Bài viết
- 350
- Được thích
- 47
bác thử lại thế này nhé
Chào các anh chị và các bạn GPE!Có tí vấn đề rồi bạn ơi, từ dòng số 5 trở xuống format như vậy là ổn rồi, còn dòng số 1 đến 4 thì bạn chỉnh lại dùm mình là không format gì cả. Cảm ơn bạn nhé
Thay vì sử dụng code sao bạn không sử dụng Data Consolidate sẵn có để tổng hợp?Chào các anh chị và các bạn GPE!
Bài #15 đã hỗ trợ tôi viết code và đã sử dụng trong thời gian dài, nay dữ liệu có sự thay đổi để đồng nhất các Sheet nên mong các anh chị và các bạn điều chỉnh rút ngắn code để code hoạt động được nhanh hơn.
Chân thành cảm ơn.
Mình chua biết Data Consolidate là gì, mình sẽ tìm hiểu. Hàng tháng mình có khoảng 30 file excel cần phải tổng hợp dữ lieu và sau đó in ra để phát hành.Thay vì sử dụng code sao bạn không sử dụng Data Consolidate sẵn có để tổng hợp?
THử XEM CODE Mới Này XEMMình chua biết Data Consolidate là gì, mình sẽ tìm hiểu. Hàng tháng mình có khoảng 30 file excel cần phải tổng hợp dữ lieu và sau đó in ra để phát hành.
cảm ơn bạn đã quan tâm.
Sub UPDATE_DATA()
Application.ScreenUpdating = False
Dim WS As Worksheet, Arrsh As String, endr As Long
Sheet4.[5:6000].Clear: Sheet5.[5:6000].Clear
Arrsh = "?TON?TEMP?"
For Each WS In Worksheets
If InStr(1, Arrsh, "?" & WS.Name & "?", vbTextCompare) = 0 Then
WS.Range("A5:P" & WS.[A6500].End(3).Row).Copy
Sheets("TEMP").Range("A65536").End(3).Offset(1).PasteSpecial (12)
End If
Application.CutCopyMode = False
Next
Sheet5.[A4:P123000].AdvancedFilter 2, Sheet4.[M2:M3], Sheet4.[A4:K4], False
Sheet5.[5:6000].Clear
With Sheet4
endr = [A65536].End(3).Row
.Range("H5:h" & endr).FormulaR1C1 = "=RC[1]*RC[-3]"
.Range("j5:j" & endr).FormulaR1C1 = "=IF(RC[-3]>RC[-2],""NG"",""OK"")"
.Range("a5:a" & endr).Value = Evaluate("ROW(R:R)")
.Range("A5:k" & endr).Borders.LineStyle = 2
End With
Application.ScreenUpdating = True
End Sub
Cảm ơn bạn Lê Duy Thương Code chạy mình thấy đúng rồi. Do mình có nhiều file excel cần phải sử dung code như vầy có hướng nào phát triển code thành dạng Add In và hiện diện lên thanh Ribbon của Office không bạn. Nếu được bạn nghiêng cứu giúp mình nhéTHử XEM CODE Mới Này XEM
THêM FILEPHP:Sub UPDATE_DATA() Application.ScreenUpdating = False Dim WS As Worksheet, Arrsh As String, endr As Long Sheet4.[5:6000].Clear: Sheet5.[5:6000].Clear Arrsh = "?TON?TEMP?" For Each WS In Worksheets If InStr(1, Arrsh, "?" & WS.Name & "?", vbTextCompare) = 0 Then WS.Range("A5:P" & WS.[A6500].End(3).Row).Copy Sheets("TEMP").Range("A65536").End(3).Offset(1).PasteSpecial (12) End If Application.CutCopyMode = False Next Sheet5.[A4:P123000].AdvancedFilter 2, Sheet4.[M2:M3], Sheet4.[A4:K4], False Sheet5.[5:6000].Clear With Sheet4 endr = [A65536].End(3).Row .Range("H5:h" & endr).FormulaR1C1 = "=RC[1]*RC[-3]" .Range("j5:j" & endr).FormulaR1C1 = "=IF(RC[-3]>RC[-2],""NG"",""OK"")" .Range("a5:a" & endr).Value = Evaluate("ROW(R:R)") .Range("A5:k" & endr).Borders.LineStyle = 2 End With Application.ScreenUpdating = True End Sub
Cảm ơn hpkhuong code chạy mình thấy dư 2 dòngBạn thử với code này:
Mã:Option Explicit Sub GPE() Dim Ws As Worksheet, Arr, dArr, I&, K& ReDim dArr(1 To 100000, 1 To 11) Application.ScreenUpdating = False For Each Ws In Worksheets If Ws.Name <> "Ton" Then Arr = Ws.Range(Ws.[A5], Ws.[A6500].End(3)).Resize(, 12).Value For I = 1 To UBound(Arr) K = K + 1 dArr(K, 1) = K dArr(K, 2) = Arr(I, 3) dArr(K, 3) = Arr(I, 7) dArr(K, 4) = Arr(I, 9) dArr(K, 5) = Arr(I, 11) dArr(K, 6) = Arr(I, 12) dArr(K, 7) = Empty dArr(K, 8) = "=RC[1]*RC[-3]" dArr(K, 9) = Arr(I, 5) dArr(K, 10) = "=IF(RC[-3]>RC[-2],""NG"",""OK"")" dArr(K, 11) = "=RC[-4]-RC[-3]" Next I End If Next Ws With Sheets("Ton") .Range("A5:K100000").ClearContents If K Then .Range("A5").Resize(K, 11) = dArr .Range("A5").Resize(K, 11).Borders.ColorIndex = 1 End If End With Application.ScreenUpdating = True End Sub
và lúc này lại cần đến anh nhân viên mạnh mẽ hpKhuong lấy dữ liệu từ TXT gắn vào sheet bằng vi ba . há há1. Là sao? dư dòng nào đâu? Có bao nhiêu dòng bên sheet 1,2,3 thì nó mang qua hết. Tổng là 26 dòng mà.... Tôi test chẳng thấy dư dòng nào cả
2. Bạn nghĩ sao việc code cho bạn 1 đoạn dùng để tổng hợp (mỗi tháng chạy 1 lần để mục đích đi kiểm kê thôi) mà phải tùy biến thành addin... cho tiện. Với cái việc copy code vào và chạy 1 phát mà cũng không làm được ah? phải đi cài addin ....Thì tôi không hiểu nổi bạn làm biếng đến cỡ nào rồi...
Công ty tôi nhân viên kế toán kho đi kiểm kê mấy chục ngàn hàng...họ dùng máy bắn, sau đó cắm máy vào PC để xuất ra file TXT, sau đó từ TXT này mới dùng excel cắn xén....tùm lum thứ mới ra được cái dữ liệu thô.........từ đó mà lên bảng kiểm kê....đối chiếu với sổ sách..... Đấy...........việc của họ nó dài hơi và thủ công vậy đó mà họ vẫn làm được....chứ chưa nói chi đến chuyện nhấp chuột là có số liệu...
Còn bạn chỉ việc chạy code thôi mà... Nói túm lại bó tay.canh....![]()
Ah, đã kiểm tra lại rồi hpkhuong ơi, kết quả đúng rồi cảm ơn bạn nhé nhưng bạn có thể chỉnh lại dùm mình lấy dữ liệu của sheet 1,2,3 qua sheet Ton thôi bởi vì file có thể có những sheet linh tinh khác không cần lấy qua sheet Ton1. Là sao? dư dòng nào đâu? Có bao nhiêu dòng bên sheet 1,2,3 thì nó mang qua hết. Tổng là 26 dòng mà.... Tôi test chẳng thấy dư dòng nào cả
2. Bạn nghĩ sao việc code cho bạn 1 đoạn dùng để tổng hợp (mỗi tháng chạy 1 lần để mục đích đi kiểm kê thôi) mà phải tùy biến thành addin... cho tiện. Với cái việc copy code vào và chạy 1 phát mà cũng không làm được ah? phải đi cài addin ....Thì tôi không hiểu nổi bạn làm biếng đến cỡ nào rồi...
Công ty tôi nhân viên kế toán kho đi kiểm kê mấy chục ngàn hàng...họ dùng máy bắn, sau đó cắm máy vào PC để xuất ra file TXT, sau đó từ TXT này mới dùng excel cắn xén....tùm lum thứ mới ra được cái dữ liệu thô.........từ đó mà lên bảng kiểm kê....đối chiếu với sổ sách..... Đấy...........việc của họ nó dài hơi và thủ công vậy đó mà họ vẫn làm được....chứ chưa nói chi đến chuyện nhấp chuột là có số liệu...
Còn bạn chỉ việc chạy code thôi mà... Nói túm lại bó tay.canh....![]()
Bài #26 hiện cho kết quả đúng rồi nhưng mình có vấn đề bạn nào biết giúp mình với. File của mình có nhiều sheet nhưng mình chỉ lấy dữ liệu từ sheet 1,2,3 qua sheet TonBạn thử với code này:
Mã:Option Explicit Sub GPE() Dim Ws As Worksheet, Arr, dArr, I&, K& ReDim dArr(1 To 100000, 1 To 11) Application.ScreenUpdating = False For Each Ws In Worksheets If Ws.Name <> "Ton" Then Arr = Ws.Range(Ws.[A5], Ws.[A6500].End(3)).Resize(, 12).Value For I = 1 To UBound(Arr) K = K + 1 dArr(K, 1) = K dArr(K, 2) = Arr(I, 3) dArr(K, 3) = Arr(I, 7) dArr(K, 4) = Arr(I, 9) dArr(K, 5) = Arr(I, 11) dArr(K, 6) = Arr(I, 12) dArr(K, 7) = Empty dArr(K, 8) = "=RC[1]*RC[-3]" dArr(K, 9) = Arr(I, 5) dArr(K, 10) = "=IF(RC[-3]>RC[-2],""NG"",""OK"")" dArr(K, 11) = "=RC[-4]-RC[-3]" Next I End If Next Ws With Sheets("Ton") .Range("A5:K100000").ClearContents If K Then .Range("A5").Resize(K, 11) = dArr .Range("A5").Resize(K, 11).Borders.ColorIndex = 1 End If End With Application.ScreenUpdating = True End Sub
Cảm ơn hpkhuong nhé. Dữ lieu sheet 1,2,3 nếu nhiều hơn so với hiện tại khi lấy qua sheet Ton thì tự động Border, còn khi dữ liệu ít hơn thì có cách nào bỏ phần Border dư không? Bạn giúp mình thêm code vào cho hoàn chỉnh nhé.Bạn lấy lại code này.
Mã:Option Explicit Sub GPE() Dim Ws As Worksheet, Arr, dArr, I&, K& ReDim dArr(1 To 100000, 1 To 11) Application.ScreenUpdating = False For Each Ws In Worksheets If Ws.Name = "1" Or Ws.Name = "2" Or Ws.Name = "3" Then Arr = Ws.Range(Ws.[A5], Ws.[A6500].End(3)).Resize(, 12).Value For I = 1 To UBound(Arr) K = K + 1 dArr(K, 1) = K dArr(K, 2) = Arr(I, 3) dArr(K, 3) = Arr(I, 7) dArr(K, 4) = Arr(I, 9) dArr(K, 5) = Arr(I, 11) dArr(K, 6) = Arr(I, 12) dArr(K, 7) = Empty dArr(K, 8) = "=RC[1]*RC[-3]" dArr(K, 9) = Arr(I, 5) dArr(K, 10) = "=IF(RC[-3]>RC[-2],""NG"",""OK"")" dArr(K, 11) = "=RC[-4]-RC[-3]" Next I End If Next Ws With Sheets("Ton") .Range("A5:K100000").ClearContents If K Then .Range("A5").Resize(K, 11) = dArr .Range("A5").Resize(K, 11).Borders.ColorIndex = 1 End If End With Application.ScreenUpdating = True End Sub
muốn giúp lắm nhưng nhìn dữ lieu như một đám rừng. chăc đọc dữ liệu và hiểu chắc hết 3 tháng nên đành chờ cao nhân vậyChào các ace diễn đàn,
Tiện sẵn có thread này về tổng hợp dữ liệu mình xin hỏi luôn.
Mình có file master tổng hợp dữ liệu từ nhiều file khác nhau trong cùng 1 folder, những file này thay đổi hằng ngày.
Trong file master đã có code copy nội dung của các file đó vào từng sheet tương ứng rôi, tuy nhiên mình chạy thì báo lỗi.
Ace xem giúp và sửa giúp mình với. Mình thì coi như ko biết gì code hết mà rất cần để chạy report cho lẹ
File này là của một bạn cùng cty đã nghỉ để lại.
P/s Lỗi ở đây ko kể lỗi do thiếu file trong folder vi những file đó mình cũng ko cần nữa. Lỗi mình muốn nói là code đó ko copy dc dữ liệu từ các file có sẵn.
anh cứ cố gắng đọc hiểu 3 tháng đi , vì mấy người viết chen ngang kiểu này cứ quăng bài xong 6 tháng sau mới quay lại xem kết quả màmuốn giúp lắm nhưng nhìn dữ lieu như một đám rừng. chăc đọc dữ liệu và hiểu chắc hết 3 tháng nên đành chờ cao nhân vậy![]()
Hi bạn, cái code đó open file trong thư mục, copy data, rồi paste vào sheet tương ứng trong file master. Ví dụ mở file I2120 rồi copy data trong đó vào sheet I2120 trong file mastermuốn giúp lắm nhưng nhìn dữ lieu như một đám rừng. chăc đọc dữ liệu và hiểu chắc hết 3 tháng nên đành chờ cao nhân vậy![]()