[Hỏi] Tổng hợp dữ liệu nhiều sheet (1 người xem)

  • Thread starter Thread starter vn8888
  • Ngày gửi Ngày gửi

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

vn8888

Thành viên mới
Tham gia
17/3/17
Bài viết
3
Được thích
0
Chào mọi người, mình muốn tổng hợp số liệu của nhiều sheet thành 1 tổng
Cụ thể là gom xem có bao nhiêu loại, dùng hết bao nhiêu.... Mong mọi người giúp, chứ làm thủ công vừa lâu lại có khi không chính xác
Chân thành cám ơn !
 

File đính kèm

Ca này có vẻ hơi khó ạ **~**
 
Chẳng ai hiểu bạn muốn làm cái gì?????

Theo tôi hiểu thì dùng biểu này để báo cáo, chứ chẳng ai theo dõi kỳ hoặc vậy cả.
Hết khó cho tới khi bạn biểu đạt được vấn đề của mình. Nếu khó biểu đạt thì làm vài ví dụ kết quả minh họa...
Trong mỗi sheet là 1 cơ sở sử dụng thuốc, có loại thuốc thì giống, có loại lại khác nhau.
Ví dụ : - ở sheet 0 thuốc nhỏ mắt Natri Clorid 0,9 % mã VD-22949-15 số lượng là 20 lọ, sheet 1 là 10 lọ (2 cái này cũng mã giống nhau)
- Sheet 0 có thuốc A mã 9999 số lượng 10 viên , sheet 1 có thuốc B mã 8888 số lượng 20 viên ( 2 thuốc 2 mã khác nhau)
Bây giờ em muốn gộp 2 sheet thành 1
Khi đó sheet tổng: - thuốc nhỏ mắt Natri Clorid 0,9 % mã VD-22949-15 số lượng sẽ là 30 lọ
- thuốc A mã 9999 số lượng vẫn là 10v, thuốc B mã 8888 số lượng vẫn là 20 viên.
Tóm tắt là em muốn gộp 2 hoặc nhiều sheet và thành 1, mã nào giống nhau thì nó cộng tổng vào , mã nào khác nó sẽ giữ nguyên.
Cách diễn đạt của em hơi kém, mong mọi người thông cảm --=0
 
Trong mỗi sheet là 1 cơ sở sử dụng thuốc, có loại thuốc thì giống, có loại lại khác nhau.
Ví dụ : - ở sheet 0 thuốc nhỏ mắt Natri Clorid 0,9 % mã VD-22949-15 số lượng là 20 lọ, sheet 1 là 10 lọ (2 cái này cũng mã giống nhau)
- Sheet 0 có thuốc A mã 9999 số lượng 10 viên , sheet 1 có thuốc B mã 8888 số lượng 20 viên ( 2 thuốc 2 mã khác nhau)
Bây giờ em muốn gộp 2 sheet thành 1
Khi đó sheet tổng: - thuốc nhỏ mắt Natri Clorid 0,9 % mã VD-22949-15 số lượng sẽ là 30 lọ
- thuốc A mã 9999 số lượng vẫn là 10v, thuốc B mã 8888 số lượng vẫn là 20 viên.
Tóm tắt là em muốn gộp 2 hoặc nhiều sheet và thành 1, mã nào giống nhau thì nó cộng tổng vào , mã nào khác nó sẽ giữ nguyên.
Cách diễn đạt của em hơi kém, mong mọi người thông cảm --=0

- Chỉ dựa vào mã cột G ?
- Kết quả bạn muốn có gồm bao nhiêu cột?
- Các cột nào muốn tổng?
- Không tách ra từng nhóm thì dễ dàng.
1 : THUỐC TÂN DƯỢC
2 : CHẾ PHẨM YHCT
7 : SAI MÃ NHÓM
..................
Tách ra hơi bị lu bu, bạn cũng chưa nói rõ, làm rồi lại "ý quên".
 
Cách diễn đạt của em hơi kém, mong mọi người thông cảm --=0

Chưa tốt thì tìm cách làm cho đạt. Kể nể "hơi kém" để làm gì?

Người khác thì đang mong bạn nêu đủ thông tin, yêu cầu...

Dùng mọi cách thức, thủ đoạn để diễn đạt được vấn đề của mình.

Kêu người khác "thông cảm" cho mình thì có ý nghĩa gì?
 
Trong mỗi sheet là 1 cơ sở sử dụng thuốc, có loại thuốc thì giống, có loại lại khác nhau.
Ví dụ : - ở sheet 0 thuốc nhỏ mắt Natri Clorid 0,9 % mã VD-22949-15 số lượng là 20 lọ, sheet 1 là 10 lọ (2 cái này cũng mã giống nhau)
- Sheet 0 có thuốc A mã 9999 số lượng 10 viên , sheet 1 có thuốc B mã 8888 số lượng 20 viên ( 2 thuốc 2 mã khác nhau)
Bây giờ em muốn gộp 2 sheet thành 1
Khi đó sheet tổng: - thuốc nhỏ mắt Natri Clorid 0,9 % mã VD-22949-15 số lượng sẽ là 30 lọ
- thuốc A mã 9999 số lượng vẫn là 10v, thuốc B mã 8888 số lượng vẫn là 20 viên.
Tóm tắt là em muốn gộp 2 hoặc nhiều sheet và thành 1, mã nào giống nhau thì nó cộng tổng vào , mã nào khác nó sẽ giữ nguyên.
Cách diễn đạt của em hơi kém, mong mọi người thông cảm --=0
Làm liều một phen
Mã:
Sub VN8888()
Dim Ws As Worksheet, Sarr, Res
Dim i As Long, j As Long, Tmp
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
If Ws.Name <> "TH" Then
Sarr = Ws.Range("A7").CurrentRegion
    For i = 5 To UBound(Sarr)
    Tmp = ""
        If Sarr(i, 3) <> "" Then
            For j = 3 To 8
            Tmp = Tmp & IIf(Tmp = "", "", "#") & Sarr(i, j)
            Next j
            Tmp = Trim(Tmp)
            If Dic.Exists(Tmp) = False Then
            Dic.Add Tmp, Array(Sarr(i, 9), Sarr(i, 10), Sarr(i, 11))
            Else
            Res = Dic.Item(Tmp)
            Res(0) = Res(0) + Sarr(i, 9)
            Res(1) = Res(1) + Sarr(i, 10)
            Dic.Item(Tmp) = Res
            End If
        End If
    Next i
End If
Next Ws
Tmp = Dic.keys
ReDim Res(1 To Dic.Count, 1 To 9)
For i = 0 To UBound(Tmp)
Res(i + 1, 7) = Dic.Item(Tmp(i))(0)
Res(i + 1, 8) = Dic.Item(Tmp(i))(1)
Res(i + 1, 9) = Dic.Item(Tmp(i))(2)
Tmp(i) = Split(Tmp(i), "#")
For j = 0 To UBound(Tmp(i))
Res(i + 1, j + 1) = Tmp(i)(j)
Next j
Next i
With Sheets("TH")
.UsedRange.ClearContents
Sheet1.Range("C7:K8").Copy .Range("A1")
.Range("A3").Resize(UBound(Res), UBound(Res, 2)) = Res
.UsedRange.Borders.LineStyle = 1
.UsedRange.Columns.AutoFit
End With
Set Dic = Nothing
End Sub
 

File đính kèm

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

Back
Top Bottom