Tổng hợp dữ liệu từ các sheet để quản lý số lượng vật tư

Liên hệ QC

duongtrieu44

Thành viên mới
Tham gia
22/7/08
Bài viết
3
Được thích
1
Chào mọi người.
Hiện tại, mình đang làm quản lý vật tư cho dự án bằng excell.
Ví dụ, mình có 3 sheet để lên list thiết bị cho 3 mục dự án nhỏ.
Nay mình muốn tổng hợp các thiết bị có trong 3 sheet đó trong sheet tổng hợp.
Mình không phải dân chuyên nên không biết làm thế nào.
Mong mọi người giúp đỡ mình, mình cảm ơn rất nhiều.
Mình có gởi kèm file excell để mọi người dễ dàng giúp đỡ.
 

File đính kèm

  • STATUS OF EQUIPMENT FOR VIG PROJECT.xls
    85.5 KB · Đọc: 68
Có anh chị nào giúp em được không? Em đang rất cần.
 
Bạn xem File
Bấm Ctrl + q để thấy kết quả

Góp ý: Bạn không nên hối thúc các thành viên như bài #2 vì mọi người còn công việc của mình.

Chúc bạn thành công
 

File đính kèm

  • STATUS OF EQUIPMENT FOR VIG PROJECT.xls
    77.5 KB · Đọc: 145
Cảm ơn các bạn đã giúp mình.
Mình sẽ rút kinh nghiệm lần sau.
 
Hỏi dhn46:
Tên sheet của bạn là số, tôi thay bằng chữ thì được, nhưng nếu chứa dấu cách thì không được.

Đã dùng dáu nháy đơn để bao nhưng không được.

Xin hỏi cách khắc phục
 
Hỏi dhn46:
Tên sheet của bạn là số, tôi thay bằng chữ thì được, nhưng nếu chứa dấu cách thì không được.

Đã dùng dáu nháy đơn để bao nhưng không được.

Xin hỏi cách khắc phục
Chào bạn

Không biết bạn sửa như thế nào? Bạn có thể up file lên không? Tôi kiểm tra trên file bài #3 thì không thấy vấn đề gì.
 
Chào bạn

Không biết bạn sửa như thế nào? Bạn có thể up file lên không? Tôi kiểm tra trên file bài #3 thì không thấy vấn đề gì.

File trên bài #3 là không sai gì. Vấn đề là dùng với tên sheet có dấu cách thì sao.

Tôi có thử một số trường hợp:

Mã của câu lệnh

lsSQL = "Select f1,f2,f3,f4,Sum(f5) as C5,Sum(f6) as C6,Sum(f7) as C7 From " _
& "(Select f1,f2,f3,f4,f5,f6,f7 From [1$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [2$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [3$A14:G65536]) a" _
& " Group by a.f1,a.f2,a.f3,a.f4"


Tôi đổi tên sheet có tên là "3" thành "a b" và sửa mã câu lệnh trên thành

lsSQL = "Select f1,f2,f3,f4,Sum(f5) as C5,Sum(f6) as C6,Sum(f7) as C7 From " _
& "(Select f1,f2,f3,f4,f5,f6,f7 From [1$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [2$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From 'a b'&[$A14:G65536]) a" _
& " Group by a.f1,a.f2,a.f3,a.f4"

hoặc sửa thành

lsSQL = "Select f1,f2,f3,f4,Sum(f5) as C5,Sum(f6) as C6,Sum(f7) as C7 From " _
& "(Select f1,f2,f3,f4,f5,f6,f7 From [1$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [2$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From ['a b'$A14:G65536]) a" _
& " Group by a.f1,a.f2,a.f3,a.f4"

đều không được (và đại khái là tôi thử với nhiều dạng khác)

Vấn đề là bạn chỉ ra cách viết tên Sheet có dấu cách trong IsSQL.

Xin cảm ơn
 
Lần chỉnh sửa cuối:
File trên bài #3 là không sai gì. Vấn đề là dùng với tên sheet có dấu cách thì sao.

Tôi có thử một số trường hợp:

Mã của câu lệnh

lsSQL = "Select f1,f2,f3,f4,Sum(f5) as C5,Sum(f6) as C6,Sum(f7) as C7 From " _
& "(Select f1,f2,f3,f4,f5,f6,f7 From [1$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [2$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [3$A14:G65536]) a" _
& " Group by a.f1,a.f2,a.f3,a.f4"


Tôi đổi tên sheet có tên là "3" thành "a b" và sửa mã câu lệnh trên thành

lsSQL = "Select f1,f2,f3,f4,Sum(f5) as C5,Sum(f6) as C6,Sum(f7) as C7 From " _
& "(Select f1,f2,f3,f4,f5,f6,f7 From [1$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [2$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From 'a b'&[$A14:G65536]) a" _
& " Group by a.f1,a.f2,a.f3,a.f4"

hoặc sửa thành

lsSQL = "Select f1,f2,f3,f4,Sum(f5) as C5,Sum(f6) as C6,Sum(f7) as C7 From " _
& "(Select f1,f2,f3,f4,f5,f6,f7 From [1$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From [2$A14:G65536] " _
& "Union all Select f1,f2,f3,f4,f5,f6,f7 From ['a b'$A14:G65536]) a" _
& " Group by a.f1,a.f2,a.f3,a.f4"

đều không được (và đại khái là tôi thử với nhiều dạng khác)

Vấn đề là bạn chỉ ra cách viết tên Sheet có dấu cách trong IsSQL.

Xin cảm ơn

Bạn chú ý: vùng dữ liệu luôn là
Mã:
[[COLOR=#ff0000][SIZE=4]3[/SIZE][/COLOR]$A14:G65536]
thì bạn chuyển tên Sheet thì cũng chỉ cần thay cái màu đỏ thôi (không cần nháy đơn)
Mã:
 [[SIZE=4][COLOR=#FF0000]a b[/COLOR][/SIZE]$A14:G65536]
 
Bạn thên mến, bạn có thể giúp mình cách để hiểu được cách làm này không bạn, cảm ơn bạn thật nhiều
 
Bạn xem File
Bấm Ctrl + q để thấy kết quả

Góp ý: Bạn không nên hối thúc các thành viên như bài #2 vì mọi người còn công việc của mình.

Chúc bạn thành công

Thường thì nếu thứ tự cột giống nhau, lấy hết các cột trong bảng dữ lệu thì nên dùng dấu * thay vì liệt kê hết cho nó gọn. Phần đặt lại tên cột trong trường hợp này là chưa cần thiết.

lsSQL = "Select f1,f2,f3,f4,Sum(f5),Sum(f6),Sum(f7) From " _
& "(Select * From [1$A14:G65536] " _
& "Union all Select * From [2$A14:G65536] " _
& "Union all Select * From [3$A14:G65536]) " _
& "Group by f1,f2,f3,f4"
 
Tạo sheet tổng hợp để quản lý vật tư

Chào các bạn cuối cùng mình cúng đã đính kèm được tập tin của mình lên, mình muốn tạo một sheet tổng hợp để khi nhập vào các sheet khác thì trong sheet tổng hợp tự cập nhật số liệu,mong các bạn giúp đỡ.
 

File đính kèm

  • thiet bi.xlsx
    52.1 KB · Đọc: 14
Chào các bạn cuối cùng mình cúng đã đính kèm được tập tin của mình lên, mình muốn tạo một sheet tổng hợp để khi nhập vào các sheet khác thì trong sheet tổng hợp tự cập nhật số liệu,mong các bạn giúp đỡ.
Thì cũng như code bài 3 thôi bạn.

[GPECODE=sql]Sub Gop_HLMT()
Dim cnn As Object, lsSQL As String, lrs As Object, FileFullName As String
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
FileFullName = Application.ThisWorkbook.FullName
With cnn
If Val(Application.Version) < 12 Then
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileFullName & ";Extended Properties=""Excel 8.0;HDR=No"";"
Else
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FileFullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
End If
.Open
End With
lsSQL = "Select F1,F2,Sum(F3),Sum(F4),Sum(F5) From " _
& "(Select * From [THEU KET$B7:F1000] " _
& "Union all Select * From [LUYEN THEP$B7:F1000] " _
& "Union all Select * From [CO DIEN$B7:F1000] " _
& "Union all Select * From [nang luong$B7:F1000] " _
& "Union all Select * From [LUYEN GANG$B7:F1000]) a " _
& "Group by a.F1,a.F2 " _
& "HAVING a.F1 IS NOT NULL"
lrs.Open lsSQL, cnn
Sheet1.[B7:F6000].ClearContents
Sheet1.[B7].CopyFromRecordset lrs
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing

End Sub

[/GPECODE]
 

File đính kèm

  • GOP.xlsm
    63 KB · Đọc: 37
Cảm ơn bạn vì đã trả lời mình, thực ra là mình thấy bài của mình giống bài 3 mà không biết các bạn đã làm thế nào cả, ấn ctrl+q không thấy gì,( hì tại mình cúng chưa có biết nhiều về excel bạn ạ). Mong bạn chỉ dẫn, mình mở GOP của bạn nhưng không mở được là sao vậy,
 
Cảm ơn bạn vì đã trả lời mình, thực ra là mình thấy bài của mình giống bài 3 mà không biết các bạn đã làm thế nào cả, ấn ctrl+q không thấy gì,( hì tại mình cúng chưa có biết nhiều về excel bạn ạ). Mong bạn chỉ dẫn, mình mở GOP của bạn nhưng không mở được là sao vậy,
Bài anh HLMT đã làm cho bạn ở trên, bạn để ý có nút "Tổng hợp" tại sheet TONG HOP. Bạn bấm vào đó để có kết quả. Bạn nhớ Enable Macro, cách Enable Macro bạn tìm hiểu thêm trên diễn đàn nhé
 
Em cảm ơn các bác nhiều lắm ạ, đúng là đi một ngày đàng học một sàng khôn.
 
Bạn à cho mình hỏi thêm bạn một chút với nhé. Mình đang quản lý tình hình nhập quặng về nhà máy. Vì mỗi ngày có nhiều chuyến, nhiều loại quặng khác nhau nên mình để mỗi ngày nhập vào là một sheet và cuối ngày có tổng hợp lại tổng số lượng của các loại quặng và mỗi tháng là có 30-31 sheet như vậy. Mình có tạo 1 sheet tổng hợp để theo dõi lũy kế qua từng ngày tuy nhiên mình vẫn làm thủ công bằng cách nhập số liệu vào, các bạn giúp mình cách đặt công thức trong sheet tổng hợp để khi mình ra được tổng khối lượng các loại quặng của từng ngày thì số liệu tổng đó tự cập nhật vào đúng ngày đó bên sheet tổng hợp của mình được không ạ?
 
Chào mọi người,
Ai có cao kiến xem mình cái code này với ạ, Em chạy SQL, Giờ em muốn lọc Nhập xuất tồn theo Thời gian, với theo Mã kho
Em đã lên nghiên cứu (lên google, youtube...) quá trời nhưng không có cách nào xử lý được ạ, hix hix...!$@!!
Em có đính kèm file ạ
Trân trọng cám ơn! :heart:
1621829783871.png
 

File đính kèm

  • TON_KHO (1).xlsm
    409.5 KB · Đọc: 9
Chào mọi người,
Ai có cao kiến xem mình cái code này với ạ, Em chạy SQL, Giờ em muốn lọc Nhập xuất tồn theo Thời gian, với theo Mã kho
Em đã lên nghiên cứu (lên google, youtube...) quá trời nhưng không có cách nào xử lý được ạ, hix hix...!$@!!
Em có đính kèm file ạ
Trân trọng cám ơn! :heart:
View attachment 259293
Tôi dở về môn này nên chia thành 3 việc khác nhau:
1/ Tính tổng nhập, xuất từ UNION 2 bảng Nhap va Xuat chép vào NXT
2/ Lấy số lượng tồn kho từ DM chép nối vào NXT
3/ Lấy hết bảng NXT vào recordset để sắp xếp, nhóm lại rồi chép lại ra NXT

Tôi chưa lấy theo điều kiện mà lấy toàn bộ dữ liệu, bạn xem file
 

File đính kèm

  • TON_KHO (1)_SQL_MrBao69.xlsm
    116.7 KB · Đọc: 8
Chừ tiến bộ hơn 1 chút làm lại chỉ còn 2 việc thôi:
1/ Tính tổng nhập, xuất từ UNION 2 bảng Nhap va Xuat chép vào NXT
2/ Lấy số lượng tồn kho từ DM ghép với dữ liệu vừa chép ra NXT ở bước 1

Rich (BB code):
Sub NXT2()
Dim Ngay1 As String, Ngay2 As String, KHO As String
Dim Rec As Object, dong As Long
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Sheet4.Range("G3:K5000").ClearContents
    
    Ngay1 = "#" & Sheet4.Range("I1") & "#"
    Ngay2 = "#" & Sheet4.Range("I2") & "#"
    KHO = "'" & Sheet4.Range("L1") & "'"
    Dim cnn As String
    cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No"""
    Set Rec = CreateObject("ADODB.Recordset")
    With Rec
        .Open ("Select F6,sum(F9),Sum(IIF(F1 LIKE 'PN%', F10,0)),Sum(IIF(F1 LIKE 'PX%', F11,0)) From (Select * From [Nhap$A4:N1017] Union All Select * From [Xuat$A4:N84]) Group By F6"), cnn
        Sheet4.Range("G3").CopyFromRecordset .DataSource
        dong = Sheet4.Range("G65536").End(xlUp).Row
        .Close
        .Open ("Select T1.F1,T1.F4,T2.F3,T2.F4 FROM [DM$A4:G849] as T1 LEFT JOIN [NXT$G3:J" & dong & "] as T2 ON T1.F1 = T2.F1 "), cnn
        Sheet4.Range("G3:K5000").ClearContents
        Sheet4.Range("G3").CopyFromRecordset .DataSource
        .Close
    End With
    Set Rec = Nothing
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub
 
Web KT
Back
Top Bottom