Tổng Hợp Dữ Liệu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

vuongtoituonglai

Thành viên thường trực
Tham gia
7/5/14
Bài viết
350
Được thích
47
Chào các anh, chị và các bạn!
Mình có một vấn đề cần được sự giúp đỡ của quý anh chị và các bạn. Tất cả những gì mình mong muốn được sự giúp đỡ đều có trong file.
Rất mong nhận được sự đỡ.
 

File đính kèm

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é
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.
 

File đính kèm

Upvote 0
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.
Thay vì sử dụng code sao bạn không sử dụng Data Consolidate sẵn có để tổng hợp?
 
Upvote 0
Thay vì sử dụng code sao bạn không sử dụng Data Consolidate sẵn có để tổng hợp?
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.
cảm ơn bạn đã quan tâm.
 
Upvote 0
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.
cảm ơn bạn đã quan tâm.
THử XEM CODE Mới Này XEM
PHP:
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
THêM FILE
 

File đính kèm

Upvote 0
THử XEM CODE Mới Này XEM
PHP:
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
THêM FILE
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é
Chân thành cảm ơn
 
Upvote 0
Bạ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 code chạy mình thấy dư 2 dòng
1. dòng số 4 của sheet 1 or 2 or 3
2. dư them một dòng trống cuối cùng và code này phát triển thành Add In để sử dung cho tiện.
mong tiếp tục nhận được sự giúp đỡ
cảm ơn bạn
 
Upvote 0
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....--=0--=0--=0
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á
 
Upvote 0
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....--=0--=0--=0
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 Ton
Còn việc phát triển code thành Add In là mình không làm biếng như bạn nghĩ đâu, sở dĩ mình nhờ phát triển code thành Add In cũng là cho tiện sử dụng mà thôi. Sẽ không mất thời gian copy code vào file, khi code cần chỉnh sửa thì cũng không mất nhiều thời gian copy lại...
 
Upvote 0
Chà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.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạ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
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 Ton
Cảm ơn
 
Upvote 0
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
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é.
Cảm ơn bạn.
 
Upvote 0
Chà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.
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**~****~**
 
Upvote 0
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**~****~**
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à --=0--=0
 
Upvote 0
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 master
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom