Hỏi về cách tạo sheet tổng hợp trong EXEL

Liên hệ QC

khanhmagy

Thành viên mới
Tham gia
27/5/08
Bài viết
4
Được thích
0
Các anh chị ơi
Em loay hoay mt c tun nay đ tìm nhưng không ra, vì không tìm ra công thc thích hp. em nghĩ cái nânhnh chị s giúp được em.
Sep giao nhim v cho em qun lý các nhan vien ban hang em tam gọi là A, B, C, D
Em đã to dng exel như file đính kèm nhưng sheet tng hp thì em chưa làm được?
Em mun là khi nhp thêm so lieu ban hang vào sheet VD ca anh A thì nó s t nhy vào dòng này trong sheet tng hp.
Anhchi giúp em vi được không?
Em cám ơn anh
 

File đính kèm

Em mun là khi nhp thêm so lieu ban hang vào sheet VD ca anh A thì nó s t nhy vào dòng này trong sheet tng hp.
Như vậy là cần xài macro sự kiện trên các trang tính;
Viết 1 macro như vậy chắc có thể vượt qua được. Nhưng để macro chạy được thì cần điểm xuất fát cho nó;
Điểm xuất fát này có thể là:
(*) Bạn nhập dữ liệu xong vô cột 7 (Có nghĩa là vừa bấm {ENTER} thì macro làm tiếp fần việc của bạn giành cho nó;
(*) Hay bạn cho biết thời điểm hay vị trí kết thúc công cuộc nhập liệu dòng đó ở 1 trong các trang A, B, C, & D,. . .

Chờ tin bạn.
 
Như vậy là cần xài macro sự kiện trên các trang tính;
Viết 1 macro như vậy chắc có thể vượt qua được. Nhưng để macro chạy được thì cần điểm xuất fát cho nó;
Điểm xuất fát này có thể là:
(*) Bạn nhập dữ liệu xong vô cột 7 (Có nghĩa là vừa bấm {ENTER} thì macro làm tiếp fần việc của bạn giành cho nó;
(*) Hay bạn cho biết thời điểm hay vị trí kết thúc công cuộc nhập liệu dòng đó ở 1 trong các trang A, B, C, & D,. . .

Chờ tin bạn.
Anh/ chị HYen 17 ơi, em nghe đến Marco thì thấy mới quá, em chưa có khái niệm gì về cái này cả.
Anh chị có thể nói rõ hơn và chỉ dẫn em cách thực hiện cụ thể được không?
(anh/ chị thông cảm vì em ko giỏi vi tính lắm)
Mong anh/chị sớm hồi âm
 
Theo tớ thì bạn chỉ cần liên kết (link) các sheet lại với nhau. Bạn xem lại ví dụ:
 

File đính kèm

Anh/ chị HYen 17 ơi, em nghe đến Marco thì thấy mới quá, em chưa có khái niệm gì về cái này cả.
Anh chị có thể nói rõ hơn và chỉ dẫn em cách thực hiện cụ thể được không?
(anh/ chị thông cảm vì em ko giỏi vi tính lắm)
Mong anh/chị sớm hồi âm
Đó là cách sử dụng VBA là ngôn ngữ lập trình áp dụng trong excel. Bạn nói rõ cụ thể hơn mọi người mới giúp được. VD
1. Sheet tổng hợp đã có hàng trống có sẵn hay chưa, hay phải chèn hàng trống đó, nếu có sẵn thì có 1 hàng thôi hay sao nếu vậy nếu nhập thêm hàng ở sheet A thì ntn?
2. Dữ liệu nhập ở sheet A chỉ 1 cell thôi hay cả hảng?....
 
Anh/ chị HYen 17 ơi, em nghe đến Marco thì thấy mới quá, em chưa có khái niệm gì về cái này cả.
Anh chị có thể nói rõ hơn và chỉ dẫn em cách thực hiện cụ thể được không?
(anh/ chị thông cảm vì em ko giỏi vi tính lắm)
Mong anh/chị sớm hồi âm
Theo mình, bài này nên sử dụng sự kiện Worksheet_Activate, bạn nhập xong dữ liệu ở các sheet A,B....trở lại sheet "TONG HOP" nó sẽ cập nhật
Có vài yêu cầu:
_ Cấu trúc các sheet phải giống nhau
_ Để nguyên tên sheet cho đỡ cực
Mình làm tạm cho bạn file này, bạn cứ thử nhập dữ liệu ở các sheet (không bắt buộc phải nhập tất cả) xong quay lại Sheet "TONG HOP" xem kết quả có đúng ý bạn chưa nhé
Cái này làm tạm thôi, có gì bàn tiếp
Thân
 

File đính kèm

Anh ơi, đúng ý em rồi, em vui lắm nhưng mà ko biết là bác đã làm thế nào?
Giờ em sẽ làm lại, có nhiều dữ liêu hơn
bác chia sẻ để em và mọi người cùng áp dụng để tự tạo file cho riêng mình nhé.

Bác Concogia ơi,
em đã làm được sheet tổng hợp rồi nhưng mà ở sheet tổng hợp em muốn có một dòng cuối là Tổng là sum soos tiền lại
Thì lại không được.
Anh/ chị Concogia giúp em giải quyết vấn đề này với?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bác Concogia ơi,
em đã làm được sheet tổng hợp rồi nhưng mà ở sheet tổng hợp em muốn có một dòng cuối là Tổng là sum soos tiền lại
Thì lại không được.
Anh/ chị Concogia giúp em giải quyết vấn đề này với?
Tổng ở cột nào : cột F hay cột G hay cả 2 cột
Tạm thời tính tổng ở cả 2 cột nhé
Bạn thế code này vào code cũ trong bài
Mã:
Private Sub Worksheet_Activate()
 Dim i, TAM(), Ws As Worksheet, TongUS, TongVn
  TAM = Array("A", "B", "C", "D")
    Range("b4:g500").ClearContents
        For i = 0 To UBound(TAM)
        Set Ws = Sheets(TAM(i))
            With Ws.Range(Ws.[b4], Ws.[b500].End(xlUp)).Resize(, 6)
                .Copy [b500].End(xlUp).Offset(1, 0)
            End With
        Next
            Set TongVn = Range([f4], [f4].End(xlDown))
            [f500].End(xlUp).Offset(2, 0) = Application.WorksheetFunction.Sum(TongVn)
            Set TongUS = Range([g4], [g4].End(xlDown))
            [g500].End(xlUp).Offset(2, 0) = Application.WorksheetFunction.Sum(TongUS)
End Sub
 
Em đã làm được rồi bác ơi,
Cám ơn bác nhé.
Bác conconga oi, cho em xin dc email được ko? Em còn một big issues cần giải quuyết nhưng lại hơi private tẹo ko tiện up lên mạng được.
Mong hồi âm bác
 
Tôi là thành viên mới nhưng không am hiểu nhiều về tin học, xin cán ơn bài viết về lập Sheet tông hop đã được tác giả concogia . Mong được tác giả bật mí cho biết cách thực hiện cụ thể.Xin chân thành cám ơn
 
Mình đã xem file của concogia thấy rất thú vị nhưng lại không hiểu làm thế nào để ra được sheet tổng hợp như thế. Hướng dẫn mình với nhé. Rất rất cảm ơn!
 
Lần chỉnh sửa cuối:
Private Sub Worksheet_Activate()
Dim i, TAM(), Ws As Worksheet
' khai bao bien i, tam(), ws kieu la worksheet
TAM = Array("A", "B", "C", "D")
'gan Tam vao bang cach khai bao bien Tam dang mảng
Range("b4:g500").ClearContents
' vùng sheet "tong hop" tư ô b4:g500" được xóa bạn có thể dùng thuộc tinh clear, clear format, clear comment de tim hieu
For i = 0 To UBound(TAM)
' dum vay lap de duyet qua tung mang co nghi la tu 0 to 3
Set Ws = Sheets(TAM(i))
' neu i=0 thi ws = sheets("A") đó là ten của sheet A
With Ws.Range(Ws.[b4], Ws.[b500].End(xlUp)).Resize(, 6)
' với sheet A thi vùng từ ô b4 đến ô g15 tương ứng với sheet A
' bằng cách dùng cách [b500].end(xlup) để xác đinh ô cuối cùng có dữ liệu đó là ô b15
' và từ b4 đến b15 mình kéo con chuột đền vùng g15 để copy bằng thuộc tính resize
.Copy [b500].End(xlUp).Offset(1, 0)
'rồi từ sheet tổng hợp mình chọn ô b4 để là nơi mình sẽ paste dữ liệu từ sheet A mới copy
'bằng cách dùng lệnh [b500].end(xlup) thực chất câu lệnh lúc này là ô b3 của sheet tong hop được chọn như lệnh .offset(1,0) sẽ đưa xuong ô b4
End With
Next
'sau đó tiếp tục vòng lặp để tới sheet B, C, D
'bạn có thể thêm khai bao biến TAM thêm vai ten sheet nua E, F, G chằng hạn
'có thể thay [b500] thành [b65356] cũng vậy thôi
End sub
Nếu có gì quy phạm bảng quyền của a concogia mong anh bỏ qua. Mong tác giả giải thích thêm em chỉ hiểu tới đó thôi
 
Xin cám ơn bài viết của tác giả nmhung49.
 
Các bác ơi! Cũng chủ đề này luôn, cho em hỏi để phát triển thêm ít.
Hiện theo kết quả file trên, thì Sheet "TONG HOP" sẽ không sắp xếp theo thứ tự thời gian nhập của các sheet con.
Ý của em muốn là như vậy.
Ví dụ: ở Sheet "A", khi nhập thêm 1 dòng ở thời điểm 9h, nó sẽ hiện ở sheet "TONG HOP" (gọi là thứ tự 1), điều này không có gì bàn cãi.
Ở thời điểm 9h5, mình nhập thêm 1 dòng ở Sheet "B", em muốn nó hiện ngay sau dòng Sheet "A" vừa nhập (gọi là thứ tự 2).
Và ở thời điểm 9h10, mình nhập thêm 1 dòng ở Sheet "A", nó sẽ hiện ngay sau dòng Sheet "B" vừa nhập (gọi là thứ tự 3).
Tương tự cho các Sheet "C", "D".
Bác nào giúp em với.
Cho em xin code lun.
:.,:.,:.,
 
Tôi có một cách khác , tối ưu hóa hơn , chỉ cần một sheet để nhập và một sheet tổng hợp vậy thôi!Nhưng chỉ sợ bạn thích cách này hơn theo ý của bạn thôi!
 
Tôi có một cách khác , tối ưu hóa hơn , chỉ cần một sheet để nhập và một sheet tổng hợp vậy thôi!Nhưng chỉ sợ bạn thích cách này hơn theo ý của bạn thôi!
Cám ơn bạn đã quan tâm ý kiến của mình, bạn có thể share file đã làm theo cách của bạn ko, thanks!
 
Tôi hướng dẫn bạn dùng file này, nó tối ưu hơn vì bạn có thể lọc dữ liệu theo tên NVBH mà bạn muốn tham khảo và Add dữ liệu vào data một cách nhanh chóng không cần ngõ bàn phím nhiều!
Bước 1:trong sheet("nhaplieu") tại ô B2 có một comboxlist bạn click vào thì nó sour ra một số tên nhân viên, rồi bạn chọn một tên bất kì
Bước 2: cùng trong sheet này , bạn xuống ô click vào ô A5 nó tự động hiện ra một comboxlist tiếp bạn chọn tên sản phẩm (lưu ý , khi ô A5 nhập xong thì comboxlist mới hiện ra ở dòng tiếp theo khi bạn select vào ô đó), rồi nhập tiếp vào ô B5(sl)
Bước 3: khi bạn nhập xong bạn bấm nút "Add Data" để nó add qua Sheet(Data) vậy là xong.Bạn có thể nhập nhiều lần để cảm nhận nó hoạt động
Lưu ý: trong sheet("all ds") mình có tạo một số list danh sach như: tên NVBH , tên sản phẩm, tỉ giá theo từng thời kì, tên khách hàng hoặc đối tác.......nếu bạn muốn thêm vào thì chỉ thêm trong giới hạng khung mà mình khoanh vùng ở từng danh sách thì các comboxlist sẽ tự động cập nhật theo sau khi bạn update một danh sách nào đó
Bước cuối: sau khi bạn nhập và add vào Data nhiều lần , thì qua sheet("locdulieu") chọn tên và bấm nút "RunReport" để trải nghiệm nha

một số thủ tục comboxlist và điều kiện cho nó
Mã:
Private Sub ComKH_Change()
On Error Resume Next
If Range(ComKH.LinkedCell).Value > "" Then
   Range(ComKH.LinkedCell) = ComKH.Column(0)
End If
End Sub


Private Sub CommandButton1_Click()
Union([a5].Resize(10, 7), [B2:C2]).ClearContents
End Sub


Private Sub ComSP_Change()
On Error Resume Next
If Range(ComSP.LinkedCell).Value > "" Then
   Range(ComSP.LinkedCell) = ComSP.Column(0)
   Range(ComSP.LinkedCell).Offset(0, 2) = ComSP.Column(1)
   Range(ComSP.LinkedCell).Offset(0, 3).FormulaR1C1 = "=rc[-1]*rc[-2]"
   Range(ComSP.LinkedCell).Offset(0, 4) = Application.Round(Range(ComSP.LinkedCell).Offset(0, 3) / Sheet2.[d2], 2)
End If
End Sub


Private Sub ComTEN_Change()
[B2:C2].Value = ComTEN.Value
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [a4:a14]) Is Nothing And Target.Count = 1 And Target.Offset(-1, 0) > "" Then
    ComSP.Visible = True
    ComSP.Top = Target.Top
    ComSP.Left = Target.Left
    ComSP.LinkedCell = Target.Address
Else: ComSP.Visible = False
End If
If Not Intersect(Target, [F4:F14]) Is Nothing And Target.Count = 1 And Target.Offset(-1, 0) > "" Then
    ComKH.Visible = True
    ComKH.Top = Target.Top
    ComKH.Left = Target.Left
    ComKH.LinkedCell = Target.Address
Else: ComKH.Visible = False
End If
End Sub
còn đây là thủ tục add data bạn có thể tham khảo
Mã:
Private Sub ComDaTa_Click()
Dim ArrN(), ArrD()
Dim Lrw As Long, RwSP As Long, i As Long, k As Long
Lrw = Sheet3.[a100000].End(xlUp).Row
RwSP = Sheet1.[a11].End(xlUp).Row
ArrN = Sheet1.Range("a5:G" & RwSP).Value
ReDim ArrD(1 To UBound(ArrN, 1), 1 To 8)
For i = 1 To UBound(ArrN, 1)
    If ArrN(i, 1) > "" Then
        k = k + 1
        ArrD(k, 1) = [b2]
        ArrD(k, 2) = ArrN(i, 1)
        ArrD(k, 3) = ArrN(i, 2)
        ArrD(k, 4) = ArrN(i, 3)
        ArrD(k, 5) = ArrN(i, 4)
        ArrD(k, 6) = ArrN(i, 5)
        ArrD(k, 7) = ArrN(i, 6)
        ArrD(k, 8) = ArrN(i, 7)
    End If
Next i
If k = 0 Then MsgBox " Ban Chua Nhap Thong Tin SP"
If k > 0 Then
Union([a5].Resize(10, 7), [B2:C2]).ClearContents
Sheet3.Cells(Lrw + 1, 1).Resize(k, 8) = ArrD
Sheet3.Range("a5:h" & Lrw + k + 1).Sort Sheet3.Columns(1), , , , , , , , , , xlSortColumns
MsgBox " Ban Da Add Du Lieu Thanh Cong"
End If
End Sub


Private Sub ComKH_Change()
On Error Resume Next
If Range(ComKH.LinkedCell).Value > "" Then
   Range(ComKH.LinkedCell) = ComKH.Column(0)
End If
End Sub


Private Sub CommandButton1_Click()
Union([a5].Resize(10, 7), [B2:C2]).ClearContents
End Sub
Chúc bạn thành công!
 

File đính kèm

Cám ơn bạn đã phản hồi bài viết của mình ngay.
Mình share cho bạn file này.
Nhờ bạn giúp dùm.
Ý của mình muốn là như vậy.
Ví dụ: ở Sheet "CARTON-BH", khi nhập thêm 1 dòng ở thời điểm 9h, nó sẽ hiện ở sheet "TONG HOP" (gọi là thứ tự 1), điều này không có gì bàn cãi.
Ở thời điểm 9h5, mình nhập thêm 1 dòng ở Sheet "CARTON-BD", mình hiện ngay sau dòng Sheet "CARTON-BH" vừa nhập (gọi là thứ tự 2).
Và ở thời điểm 9h20, mình nhập thêm 1 dòng ở Sheet "OFFSET", mình muốn hiện ngay sau dòng Sheet "CARTON-BD" vừa nhập (gọi là thứ tự 3).
Ý mình là bất cứ thời điểm nào trong ngày, mình nhập thêm 1 dòng ở bất cứ Sheet nào, thì Sheet "TONG HOP" sẽ thêm vào ngay cuối.
Bác giúp em với.
Cho em xin code lun.
 

File đính kèm

mâysmấ mình nói cho bác nghe vấn đề của bác chẳng có gì khó, nhưng khi sửa hết lại code theo dữ liệu của bác thì tôi cũng bắt đầu thấy mệt rồi, làm xong file này cũng mất mâý h, mà khi tôi làm xong flie này cũng hơi mệt đấy!
 
bạn nên rút kinh nghiêm nếu đã đưa file lên thì nói tất tần tật những khó khăn của bạn , để ae diễn đàn còn giải quyết, chứ cái kiểu " được voi đòi tiên " như thế này , người viết chỉnh sửa lại thì cũng được, nhưng có nhiều thứ không biết đâu mà lần, giống như khi sửa xong bạn lại thêm yêu cầu tôi cũng không còn hứng thú với file của bạn nữa!
 
Web KT

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

Back
Top Bottom