Giúp em về việc trích xuất dử liệu đễ báo cáo

Liên hệ QC

thanhtri

Thành viên hoạt động
Tham gia
6/5/07
Bài viết
113
Được thích
23
Em post bảng tính này lên mong các anh giúp đở. Em đã làm hoàn tất nó hơn 90% rồi, chỉ còn 1 vướng mắc nhỏ mà ko biết cách nào đễ giãi quyết.
Các anh nhìn vào sheet "Summary" nha! Ở sheet này em trích dử liệu ra từ các sheet "01", "02",... "12". Chỉ cần bấm vào ô SELECT MONTH là nó sẽ trích dử liệu ra theo từng tháng. Ở đây em chỉ mới nhập liệu có 3 tháng thôi và tất nhiên sau khi làm xong thì các cột từ G đến R sẽ ẩn
Bây giờ em muốn "SHOW ALL" hết tất cả các tháng nào có dử liệu thì phải làm thế nào? Tốt nhất là khi SHOW ALL, mỗi tháng nên cách nhau 1 hàng trống cho dẽ phân biệt. Nếu khi chọn vào SHOW ALL xong thì nó phải hiển thị ra gần gần giống với sheet EXAMPLE (Sheet này em ví dụ cho các anh dễ hiểu thôi)
Em nghĩ mãi vẫn... bó tay! Giúp em với
Miss TT
 
Lần chỉnh sửa cuối:
Mục đích của bạn là khi show all thì sẽ có 12 tháng hiện ra, khi 1 thì sẽ hiện 1 còn không thì rỗng để bạn dùng index. File này hay ghê, bạn rất giỏi đọc thấy dã man luôn về công thức . Phải nói là tôi học được rất nhiều từ file này, lần sau nhớ dùng name define rút gọn công thức.
Tôi làm cho bạn 1 file để lấy list bạn nghiên cứu và rút gọn công thức nhé, cũng dã man lắm, rút xong up lại cho tôi xem với, đang lùng bùng. Nếu o hiểu thì hỏi.
Còn gấp quá thì mỗi tháng làm xong và copy, làm tiếp, copy tiếp
 

File đính kèm

thanhtri đã viết:
Sao ko ai giúp em vậy? Mấy anh tài giõi lắm mà. Hay là em đăng bài nầy vào mục "Excel dành cho người mới bắt đầu" nên mấy anh "coi thường"
Giúp em đi mấy anh ơi. Chỉ còn 1 tuần nữa là em phải báo cáo rồi. Em biết rành tính khí của ông Sếp. Thế nào ông ta cũng bào rằng: "Giờ tao muốn coi 1 lúc cả 12 tháng thì phải làm sao?" Làm sao uh? Lúc đó chắc chắn em chỉ có nước "làm thinh" thôi chứ làm gì bây giờ!
Huuuuuuuuuuuuuuuuuuuuuu

Không phải là không muốn giúp, nhưng để hiểu File của cậu thì lại cần có thời gian (chưa hình dung ra nó là cái gì !!!)
Vì thế nếu có thể thì cậu phải nói rõ hơn để mọi người khỏi mất công tìm hiểu xem : Nó là cái gì ???


Thân!
 
Bạn xài thử cái ni; ưng í thì sửa lại chút đỉnh đâu đó, nha!

Mã:
Option Explicit: Option Base 1
Const BatDau As Integer = 7:    Const Cuoi As Integer = 460
Const SoHH As Integer = 240:    Dim iJ As Integer, SoTT As Byte
[b]
Sub TongHop()[/b]
 On Error GoTo LoiTongHop
 ReDim MgTh(12) As String:          ReDim HuHg(SoHH, 6)
 Dim iDem As Integer, iHang As Integer, bNgay As Byte
 Dim Rng As Range, Rng0 As Range, hRng As Range, Rng1 As Range
 
 Application.ScreenUpdating = False
 For iJ = 1 To 12
    MgTh(iJ) = Right("0" & CStr(iJ), 2):    Sheets(MgTh(iJ)).Select
    Set Rng = Range("AI" & BatDau & ":AI" & Cuoi)
    Set Rng0 = Rng.SpecialCells(xlCellTypeConstants, 2)
    If Rng0 Is Nothing Then Exit For
    SoTT = 0
    For Each Rng In Rng0
        SoTT = 1 + SoTT:            iDem = 1 + iDem
        HuHg(iDem, 1) = SoTT
        With Rng
           HuHg(iDem, 2) = .Value:  iHang = .Row
           HuHg(iDem, 3) = .Offset(0, 1).Value
           HuHg(iDem, 4) = .Offset(0, 2).Value
        End With
        Set hRng = Range("D" & iHang & ":AH" & iHang)
        bNgay = 0
        For Each Rng1 In hRng
            bNgay = bNgay + 1
            If UCase$(Rng1.Value) = "B" Then
                HuHg(iDem, 5) = DateSerial(Year(Date), iJ, bNgay)
            ElseIf UCase$(Rng1.Value) = "F" Then
                HuHg(iDem, 6) = DateSerial(Year(Date), iJ, bNgay)
            End If
        Next Rng1
    Next Rng
 Next iJ
 Sheets("Example").Select  [B][COLOR="Blue"]'**  **!!  !![/COLOR][/B] 
  For iJ = 17 To (18 + iDem)
    Range("A" & iJ).Select
    With Selection
        .Value = HuHg(iJ - 16, 1)
        .Offset(0, 2) = HuHg(iJ - 16, 2)
        .Offset(0, 3) = HuHg(iJ - 16, 5)
        .Offset(0, 4) = HuHg(iJ - 16, 6)
    End With
 Next iJ
ErrTongHop: Application.ScreenUpdating = True
    Exit Sub
LoiTongHop:
 Select Case Err
 Case 1004
    Set Rng0 = Nothing:                 Resume Next
 Case Else
    MsgBox Error$:                      Resume ErrTongHop
 End Select
[b]End Sub[/b]
--=0
 
Báo cáo tổng hợp

thanhtri đã viết:
Em post bảng tính này lên mong các anh giúp đở. Em đã làm hoàn tất nó hơn 90% rồi, chỉ còn 1 vướng mắc nhỏ mà ko biết cách nào đễ giãi quyết.
Các anh nhìn vào sheet "Summary" nha! Ở sheet này em trích dử liệu ra từ các sheet "01", "02",... "12". Chỉ cần bấm vào ô SELECT MONTH là nó sẽ trích dử liệu ra theo từng tháng. Ở đây em chỉ mới nhập liệu có 3 tháng thôi và tất nhiên sau khi làm xong thì các cột từ G đến R sẽ ẩn
Bây giờ em muốn "SHOW ALL" hết tất cả các tháng nào có dử liệu thì phải làm thế nào? Tốt nhất là khi SHOW ALL, mỗi tháng nên cách nhau 1 hàng trống cho dẽ phân biệt. Nếu khi chọn vào SHOW ALL xong thì nó phải hiển thị ra gần gần giống với sheet EXAMPLE (Sheet này em ví dụ cho các anh dễ hiểu thôi)
Em nghĩ mãi vẫn... bó tay! Giúp em với
Miss TT
Chào thanhtri

Bạn download cái file kèm theo này về và nhập nhiều số liệu vào thêm và xem báo cáo tại sheet Summary nhe. Bạn có thể thay đổi code cho phù hợp hơn nhu cầu nhe. (Lưu ý không thay đổi cấu trúc file, nếu thay đổi thì dò code sử lại cho phù hợp). Xem thêm hướng dẫn của các bạn khác để hoàn thiện chương trình.

Good luck,
TP.
 

File đính kèm

Lần chỉnh sửa cuối:
File của bạn hay tuyệt. Tôi cũng nghĩ ra 1 cách đễ ShowAll tất cả thật đơn giãn. Bảo đảm ai cũng hiểu.
Đầu tiên chèn thêm 1 sheet, đặt tên sheet la ShowAll. Bắt đầu đặt công thức tính từ cell A17 (những cell nằm trên cứ bỏ trống), mục đích là thuận tiện cho việc đồng bộ giữa 2 sheet ShowAll và Summary. Sheet ShowAll này chỉ có 1 mục đích duy nhất là hiện tất cả dử liệu trong 12 tháng, cái nào có thì hiện, cái nào ko thì bỏ trống. Vào Insert\Name\De fine, đặt tên cũng là ShowAll, Refers to= ShowAll!A1 (ko có giá trị tuyệt đối nha). Tôi đã làm xong giúp bạn. Riêng bạn cũng có thễ nghĩ ra công thức nào khác hay hơn trên sheet ShowAll này.
Giã sử đã thành công trong việc lập công thức trên sheet ShowAll, giờ quay sang sheet Summary, sữa lại ComboBox 1 tí (thêm 1 dòng ShowAll nữa. Tức là bây giờ Cell link sẽ có giá trị từ 1 đến 13.
Tất cả công thức khác cứ việc giữ nguyên, chỉ thêm vào mỗi công thức 1 hàm IF nho nhỏ nữa là xong. Nói nôm na như thế này: Nếu (IF) cell link $H$16 mà = 13 thì lấy giá trị ShowAll trong define Name (Nghĩa là những cell trong sheet Summary lúc này sẽ = tương ứng với những cell trong sheet ShowAll. Còn ngược lại thì giữ nguyên công thức cũ.
Ko cần dùng đến bất cứ con Macro nào cả, rất đơn giãn, đúng ko?
Góp ý 1 chút. Ở khung SELECT LANGUAGE, nên dùng ratio thì hay hơn là ComboBox. Còn khung SELECT MONTH thì phải dịch luôn sang 3 thứ tiếng chứ. (dịch sẳn cho bạn luôn mà ko biết có đúng ko? Hi... hi...)
Post file lên bạn xem thử nha! Password protect sheet là: h41061
Mến
ANH TUẤN
 
Lần chỉnh sửa cuối:
Đễ em mô tả sơ qua về file này nhé!
File này chủ dùng cho việc kiểm tra. Có 1 đội kiểm ta về điện đi kiểm tra về các hạng mục đã dc ghi trong cột DESCRIPTION. Khi gặp 1 vấn đề gì đó, họ sẽ đánh dấu "B" vào ngày phát hiện rồi báo cho đội sửa chửa. Khi vấn đề đã dc giải quyết sẽ đánh dấu "F" vào ngày hoàn tất. Sheet SUMMARY dùng đễ tổng kết lại tất cả những vấn đề phát hiện dc trong các tháng và dùng đễ báo cáo cho Sếp
Anh ThuNghi đã quá khen. Thật ra file này toàn dựa trên ý tưởng của các anh trên diển đàn. Sếp giao cho em hơn 2 tháng nay mà em hoàn toàn bó tay. Đến khi anh Hiếu giãi bài toán "khám bệnh" thì em đã có chút ý tưởng và đang áp dụng trong sheet SUMMARY nè. Anh Hiếu ko đễ ý thấy sao? Tô màu ngày CN thì lấy ý tưởng của 2 anh Tuangiang và anhtuan1066. Giao diện em lấy 1 ít trong file QUANLYKHO của bạn nào đó mà em quên mất tên rồi. Và còn rất nhiều ý tưởng nữa của các anh mà em đã "ăn cắp" dc. Hiiii... (ko biết có vi phạm bản quyền ko nhỉ?)
Em vẫn chưa hài lòng lắm về cách bố trí dử liệu trong 12 tháng. Đễ ý sẽ thấy các hạng mục trong cột DESCRIPTION cứ lặp đi lặp lại hoài (quá tốn kém) nên có lần em đã nghĩ rằng giá như Excel có thêm 1 trục Z nữa thì hay biết mấy. Em sẽ cho các hạng mục trong cột DESCRIPTION vào trục Z này. Như vậy mỗi sheet chỉ chiếm khoảng 20 dòng (hiện giờ đang gần 500 dòng). Ko biết các anh có cách nào hay hơn ko cho việc bố trí dử liệu trong 12 tháng này?
Bây giờ em đang down hết tất cả các file về. Nhận xét sơ bộ thì: Em thích nhất cách bố trí của anh ttphong2007, thích nhất sự đơn giãn của anh anhtuan1066 (nhìn là hiểu ngay). Đáng tiếc là em ko biết gì về VBA nên cũng ko biết áp dụng và tùy biến đoạn code của anh SA_DQ như thế nào nữa (nhưng em cũng lưu lại mãi mốt nghiên cứu). Còn file của anh ThuNghi thì giúp em thêm 1 ý tưởng nửa về 1 file mới mà em vừa nảy ra trong đầu, sau này sẽ cần anh giúp đở thêm nữa nhé
Em sẽ trình lên Sếp 2 file (của ttphong2007 và anhtuan1066) xem ông ấy thích cái nào? Nhưng em e rằng file của anh ttphong sẽ ko thể chạy trên máy Sếp em dc vì cty em bảo mật rất nghiêm ngặt. Sợ con macro đó sẽ bị diệt trước khi thực thi nhiệm vụ.
Cuối cùng em cám ơn tất cả sự trợ giúp của các anh! Bây giờ em mới thở phào nhẹ nhõm đây! Hiiii
Miss TT
 
Ah, quên. Cám ơn anh Tuấn dịch cho em tiếng Anh và tiếng Hàn ở khung SELECT MONTH. Hoàn toàn chính xác.
Miss TT
 
Theo tôi, bạn nên tổ chức lại, chỉ nhập vào những hạng mục và khu vực nào có phát sinh B or F. Tổ chức theo dạng phiếu theo dõi từng khu vực theo hạng mục. Cuối cùng cập nhật vào có thể dùng 1 sh cho 12 tháng, theo tiêu thức ngày phát hiện và ngày hòan thành.
STT .....Khu Vực.....Hạng mục....Ngày phát hiện......Ngày hoàn thành
Các cột KV và hạng mục dùng validation.
Chỉ như vậy là đủ lập sumarry cho sếp. và nếu cần cũng có thể cho ra sh báo cáo theo tháng như bạn làm thang01...
 
Ai cha cha! Đơn giản thế sao ko nghĩ ra nhỉ. Em làm cho bạn em cái vụ Validation này hoài, bạn em cũng khen là đơn giản và gọn nhẹ. Vậy mà giờ tới phiên mình lại ko nghĩ ra. Đúng là ngu thật (đang nỗi nóng vì cái file nặng quá, hơn 2M). Cám ơn anh ThuNghi nhiều nhiều. Haaaaa. Tạm thời em sẽ báo cáo với Sếp trước đã, qua đợt này em lập tức sửa lại file rồi post lên cho anh tham khảo và chỉnh sửa nha!
Thanks to your help!
Miss TT
 
Theo tôi, bạn nên tổ chức lại
Ý mình là nên tổ chức thành hai sheets; một sheets chỉ chứa ~ hư hỏng; trong Sheet này ta thêm mã hư hỏng gồm 2 hay 3 ký tự
(nếu là 2:) Kí tự đầu biểu trưng cho hạng mục kiểm tra;
kí tự 2 là chi tiết cần kiểm trong hạng mục đó;
Sheet thứ hai gồm các trường: [STT], [MaCT], [NgayKT], [NgaySC]

Nói nôm na là bạn cần thêm một số hiểu biết bổ sung về CSDL từ diễn đàn nào đó hay qua . . . . .
 
Ôi, anh ThuNghi ơi! Em... "cay" quá. Bao nhiêu công sức em bỏ ra, giờ chỉ 1 câu nói của anh thành ra là "đổ sông đổ biển". File vừa làm xong theo ý kiến của anh quả thật là đơn giản, cũng đáp ứng dc nhu cầu mà dung lượng lại giãm xuống đáng kể (giờ chỉ còn dưới 400KB)
Làm trên file mới này thì thích thật vì nó đơn giản, Một năm gói gọn trong 1 sheet nên thậm chí 1 file cũng có thể chứa dc dử liệu của cả 10 năm. Nhưng em thấy tiếc công sức mình bỏ ra quá! Theo anh thì cái file củ của em có thể ứng dụng vào việc gì?
Em vừa làm xong file mới theo ý kiến của anh. Post lên anh xem có bổ sung gì ko nha! Cám ơn trước!
Miss TT
 
Lần chỉnh sửa cuối:
Cám ơn SA_DQ. Em sẽ lưu ý về vấn đề này!
Miss TT
 
Hay thật!!!!!!!!!!!!
Mình đang học Excel.
Thanks so much and Good lucky!
 
Theo tôi, tôi sẽ nhập DL như sau:
No.............Area......................Detail..........Ngày KT...........Ngày HT
1..............STATION 1.......Mạng nhện........15/05/2007.......20/05/2007
2..............GPE.................Rớt mạng..........25/05/2007.......27/05/2007
3..............NOS 1..............Dây nối.............25/06/2007.......Chưa sửa
....
4...........................................................15/12/2007........
Đâu cần thiết phải có lịch tháng trong file, những dòng o có phát sinh thì bỏ, sao phải chừa mỗi tháng 40 dòng. (Nếu có dụng ý khác....)
Cột Area dùng Validation.
Thêm một cột tháng = month(ngayKT) là tạo sumarry OK, dễ dàng hơn nhiều. File cũ của bạn để dùng thống kê ngày phép, nghỉ việc riêng trong năm rất tốt.
 
ThuNghi đã viết:
Theo tôi, tôi sẽ nhập DL như sau:
No.............Area......................Detail..........Ngày KT...........Ngày HT
1..............STATION 1.......Mạng nhện........15/05/2007.......20/05/2007
2..............GPE.................Rớt mạng..........25/05/2007.......27/05/2007
3..............NOS 1..............Dây nối.............25/06/2007.......Chưa sửa
....
4...........................................................15/12/2007........
Đâu cần thiết phải có lịch tháng trong file, những dòng o có phát sinh thì bỏ, sao phải chừa mỗi tháng 40 dòng. (Nếu có dụng ý khác....)
Cột Area dùng Validation.
Thêm một cột tháng = month(ngayKT) là tạo sumarry OK, dễ dàng hơn nhiều. File cũ của bạn để dùng thống kê ngày phép, nghỉ việc riêng trong năm rất tốt.

Mình cũng thấy ý kiến của ThuNghi là hợp lý đấy bạn ạ !
 
Các pác cho em hỏi nhỏ một chút. Khi mở file ElectricChecking_V02_2007, sao vào VBE mà chẳng nhing thấy code đâu?
 
Trong file ElectricChecking_V02_2007 không sử dụng VBA. Chỉ hoàn toàn công thức. Trong đó có 2 sh Hide.
 
ơ trong phai ElectricChecking_V02_2007 có 2 sheet Hide à sao mình không thấy nhỉ. Làm thế nào để hiện ra 2 sheet đã bị ẩn đi thế ( ThuNghi đã biết có 2 sheet hide thì làm ơn chỉ dẫn cách hiện ra 2 sheet đó đi để mình xem và học hỏi)
 
nguyen_vuong đã viết:
ơ trong phai ElectricChecking_V02_2007 có 2 sheet Hide à sao mình không thấy nhỉ. Làm thế nào để hiện ra 2 sheet đã bị ẩn đi thế ( ThuNghi đã biết có 2 sheet hide thì làm ơn chỉ dẫn cách hiện ra 2 sheet đó đi để mình xem và học hỏi)
Bạn mở file. sau đó vào VBA bằng Alt-F11 sẽ thấy thêm 2 sheet : General và ShowAll. Để hiện 2 sheet này thì bạn vào Properties cho thuộc tính Visible giá trị là -1 -xlSheetVisible. Trở lại Excel thấy ngay.
Thân !
 
Web KT

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

Back
Top Bottom