Cuộc thi "Excel toàn diện" online mừng sinh nhật GPE lần thứ 8

Liên hệ QC
Cám ơn thầy đã tạo ra sân chơi bổ ích, hôm nay xem lại bài thấy bài của mình được thầy chấm hơi thoáng nên mới được điểm cao.
2. Phần Data validation:
- Hoangminhtien: Validation quận và huyện càng xuống dòng dưới vùng name càng bị lệch dòng: Dữ liệu dòng 2 lệch 1 dòng, Dữ liệu dòng 3 lệch 2 dòng, ... do không cố định dòng.
Lỗi này cơ bản quá, may mà thầy chỉ trừ có 0.25

3. Phần biểu đồ:
- Hình như ít ai để ý đến việc format datapoint thay vì format data serie, nên những biểu đồ định dạng có mũi tên, thì thấy chỗ nào cũng có mũi tên. Nếu chỉ format data point, thì muốn để mũi tên ở đâu cũng được, chiều mũi tên thế nào cũng được.
Bài này em format datapoint mà thầy. hihi

Tiến không biết rằng advanced filter có thể sắp xếp thứ tự cột theo ý người dùng, nên đã tự ý thay đổi thứ tự cột của báo cáo. Chỗ này đề ra có mục đích nên các cột 2, 3, 4, 5, 6, 7 của report sẽ lấy dữ kiệu các cột lộn xộn: 2, 1, 7, 9, 8, 10. Tiến tự ý sắp thứ tự cột report để lấy 2, 1, 7, 8, 9, 10. Cột dư lại phải xóa đi. Chỉ vì việc này mà bị trừ 0.25 điểm mặc dù code chạy hoàn hảo.
Hôm nay em mới biết cái này, cám ơn thầy, hihi, với lại code của em chỉ toàn là record macro thôi mà.
 
File đính kèm là đáp án
Các bạn xem sheet biểu đồ, thử thay tán loạn các tham số và kiểm tra tỷ lệ. Còn tỷ lệ ngang dọc thì chạy đoạn code test ở trên.
Ngoài ra nguyên cái mặt cắt chỉ có 1 serie, chứ không cần nhiều series (hoặc quá nhiều).

Riêng phần VBA tôi chỉ post code câu b: Thủ tục có tham số truyền

PHP:
Sub ExtractMultiType(Date1, Date2, Criteria, ColNum)
Dim EndRw As Long, SArr(), RArr(), i As Long, j As Long, RwCnt As Long
Application.ScreenUpdating = False
t = Timer
EndRw = Sheet1.[A100000].End(xlUp).Row
SArr = Sheet1.Range("A2:K" & EndRw).Value
RwCnt = UBound(SArr, 1)
ReDim RArr(1 To RwCnt, 1 To 7)
For i = 1 To RwCnt
    If SArr(i, 2) > Date2 Then Exit For
    If SArr(i, 2) <= Date2 And SArr(i, 2) >= Date1 And SArr(i, ColNum) = Criteria Then
        j = j + 1
        RArr(j, 1) = j
        RArr(j, 2) = SArr(i, 2)
        RArr(j, 3) = SArr(i, 1)
        RArr(j, 4) = SArr(i, 7)
        RArr(j, 5) = SArr(i, 9)
        RArr(j, 6) = SArr(i, 8)
        RArr(j, 7) = SArr(i, 10)
    End If
Next
ActiveSheet.[A7].Resize(RwCnt, 7).ClearContents
If j > 0 Then ActiveSheet.[A7].Resize(j, 7) = RArr
Application.ScreenUpdating = True
ActiveSheet.[G1] = Timer - t

End Sub

Rồi các nút nhấn của 3 sheet sẽ lần lượt là:

PHP:
Private Sub CmdBtn1_Click()
ExtractMultiType [C4], [E4], [C5], 4
End Sub

PHP:
Private Sub CmbBtn1_Click()
ExtractMultiType [C4], [E4], [C5], 5
End Sub

PHP:
Private Sub CmbBtn1_Click()
ExtractMultiType [C4], [E4], [C5], 11
End Sub
nếu như mỗi sheet đều phải bấm nút thì chỉ cần dùng code advance filter là được mà thầy
PHP:
Sub advfilter()
Application.ScreenUpdating = False
  t = Timer
   ActiveSheet.[A7:L65000].Clear
   Sheet3.[A1:L65000].AdvancedFilter 2, ActiveSheet.[L1:N2], ActiveSheet.[B6:G6], False
   ActiveSheet.Range("A7:A" & [B55000].End(3).Row).Value = Evaluate("ROW(R:R)")
  Application.ScreenUpdating = True
 ActiveSheet.[G1] = Timer - t
End Sub
 
nếu như mỗi sheet đều phải bấm nút thì chỉ cần dùng code advance filter là được mà thầy
PHP:
sub advfilter()
application.screenupdating = false
  t = timer
   activesheet.[a7:l65000].clear
   sheet3.[a1:l65000].advancedfilter 2, activesheet.[l1:n2], activesheet.[b6:g6], false
   activesheet.range("a7:a" & [b55000].end(3).row).value = evaluate("row(r:r)")
  application.screenupdating = true
 activesheet.[g1] = timer - t
end sub
sao không có bài của hoàng minh tiến thầy nhỉ
 
nếu như mỗi sheet đều phải bấm nút thì chỉ cần dùng code advance filter là được mà thầy
Thì đúng vậy. Hoangminhtien đã làm như vậy với chỉ 1 ô chứa công thức dùng làm criteria. Còn code tham số truyền là 1 cách làm trong trường hợp không thể dùng Advanced filter. Nó mang tính chuyên nghiệp hơn nhưng nếu dùng được công cụ có sẵn thì cứ dùng.

hoangminhtien đã viết:
Bài này em format datapoint mà thầy. hihi

Format data point thì phải được như hình trong vòng tròn đỏ, chứ không phải các mũi tên châu đầu như trong các hình tròn xanh



Lê Duy Thương đã viết:
sao không có bài của hoàng minh tiến thầy nhỉ

Chết, upload sót rồi. Mọi người tải tại đây nha: http://www.mediafire.com/download/117ap5kmyh77c3r/hoangminhtien.rar
 
Format data point thì phải được như hình trong vòng tròn đỏ, chứ không phải các mũi tên châu đầu như trong các hình tròn xanh
Vâng, Đúng như thầy nói, tuy nhiên, em đã kiểm tra lại bài của em mấy lần và em vẫn khẳng định em dùng format data point thầy ạ.
Thầy kiểm tra lại giúp em nhé!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Phần 2: Validation: quá đơn giản, nhắm mắt cũng làm được, đưa thằng OFset và Vlookup là xong 5 phút
Offset tham chiếu Xã dùng bao nhiêu lần Offset vậy bạn? Tôi nhớ không nhầm thì 2 lần Offset lận, vì có nhiều tỉnh trùng tên huyện, nếu Offset(vung,,,countif(...)) thì sai kết quả đấy.
 
Vâng, Đúng như thầy nói, tuy nhiên, em đã kiểm tra lại bài của em mấy lần và em vẫn khẳng định em dùng format data point thầy ạ.
Thầy kiểm tra lại giúp em nhé!
Dù là đã dùng Format data point thì cũng là dùng chưa đúng cách. Hãy xem file đính kèm để thấy sự khác biệt và hiệu quả của việc format đúng cách.
 

File đính kèm

  • 03 Du thi SN08-Hoangminhtien.Chart.xlsx
    21.4 KB · Đọc: 9
Công bố kết quả:

Giải nhất: Nick vocamxuc với số điểm 9.75

Giải nhì: Nick Hoangminhtien với số điểm 9.25

Giải ba: Nick dhn46 với số điểm 8.0

Giải khuyến khích nộp bài đầu tiên thuộc về leonguyen: 10/06/2014 14:46:00

Vì không có điều kiện dự sinh nhật và giờ lâu mới quay lại đây, nên không rõ: Hoangminhtien, dhn46 , leonguyen đã nhận giải thưởng chưa? nếu chưa thì liên hệ sao?, xin cảm ơn
 
Vì không có điều kiện dự sinh nhật và giờ lâu mới quay lại đây, nên không rõ: Hoangminhtien, dhn46 , leonguyen đã nhận giải thưởng chưa? nếu chưa thì liên hệ sao?, xin cảm ơn

Chép ra đây code VBA ra đây cho tiện mọi thành viên tham khảo, bài này vocamxuc viết cho VBA câu b chỉ duy 1 và chỉ 1 sub để chạy cả 3 nút ở Report1, Report2, Report3: code lấy chính số thứ tự 1 2 3 trong tên sheet Report hiện tại làm căn cứ lấy name động được đặt trong file. code bao gồm cả phần xoá và đầy đủ khung

Mã:
'25/06/2014
'nick vocamxuc-GiaiPhapExcel
'Bai lam cho ca cau a va cau b
Sub chaybaocao()
    Dim solieu, ketqua, giatridulieuloc
    Dim cotloc As Long, n As Long, i As Long, j As Long, p As Long
    Dim sobaocao As Byte, odulieuloc As Range
    
    sobaocao = Int(Right(ActiveSheet.Name, 1))
    Set odulieuloc = ActiveSheet.[C5]
    
    solieu = Range("vRngDateRp" & sobaocao).Value
    n = UBound(solieu, 1)
    
    Select Case sobaocao
        Case 1: cotloc = 4 'Customer
        Case 2: cotloc = 5 'Vendor
        Case 3: cotloc = 11 'Sales
    End Select
    
    ReDim ketqua(1 To n, 1 To 7)
    giatridulieuloc = odulieuloc.Value
    p = 0
    For i = 1 To n
        If solieu(i, cotloc) = giatridulieuloc Then
            p = p + 1
            j = 1:      ketqua(p, j) = p                '#
            j = j + 1:  ketqua(p, j) = solieu(i, 2)    'DocDate
            j = j + 1:  ketqua(p, j) = solieu(i, 1)    'DocNo
            j = j + 1:  ketqua(p, j) = solieu(i, 7)    'ProductID
            j = j + 1:  ketqua(p, j) = solieu(i, 9)    'Price
            j = j + 1:  ketqua(p, j) = solieu(i, 8)    'Qty
            j = j + 1:  ketqua(p, j) = solieu(i, 10)    'Amount
        End If
    Next i
    
    If p > 0 Then
        With odulieuloc.Offset(2, -2)
            .Resize(10000, 11).ClearContents
            .Resize(p, j).Value = ketqua
        End With
    End If
        
    '_________________________________ phan ke khung
    If p > 0 Then
        With odulieuloc.Offset(2, -2).Resize(10000, 11)
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlNone
            .Borders(xlEdgeTop).LineStyle = xlNone
            .Borders(xlEdgeBottom).LineStyle = xlNone
            .Borders(xlEdgeRight).LineStyle = xlNone
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        End With
        
        With odulieuloc.Offset(2, -2).Resize(p, j)
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            With .Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlInsideVertical)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlThin
            End With
            With .Borders(xlInsideHorizontal)
                .LineStyle = xlContinuous
                .ColorIndex = xlAutomatic
                .TintAndShade = 0
                .Weight = xlHairline
            End With
        End With
    End If
    '_________________________________
    
End Sub

trong đó name

vRngDateRp1 cho Report1 là
=OFFSET(Data!$A$1,MATCH(Report1!$C$4,vDataDate,0),0,COUNTIFS(vDataDate, ">="& Report1!$C$4,vDataDate, "<="& Report1!$E$4),11)


tương tự vRngDateRp2,vRngDateRp3 cho Report1, Report2

Hiểu rõ các names tham khảo nên download file BaithiGPE8-vocamxuc_v2.rar kèm dự thi ptm0412 đã post bài trên tại http://www.mediafire.com/download/z37ky2hbq0fdolh/Baiduthi.rar
 
Lần chỉnh sửa cuối:
Công bố kết quả:

Giải nhất: Nick vocamxuc với số điểm 9.75

Giải nhì: Nick Hoangminhtien với số điểm 9.25

Giải ba: Nick dhn46 với số điểm 8.0

Giải khuyến khích nộp bài đầu tiên thuộc về leonguyen: 10/06/2014 14:46:00
Rất xin lỗi anh/chị vì đến hôm nay mà chưa trao quà cho anh/chị đạt giải.
Anh/chị vui lòng gửi địa chỉ nhận quà tại topic này hoặc gửi qua mail: hotro@giaiphapexcel.com
Ngay sau khi nhận được địa chỉ, thì quà tặng sẽ được chuyển ngay đến tận tay các anh/chị.
Rất cảm ơn anh/chị.
Một lần nữa thành thật xin lỗi vì sơ sót này.
moneymong.pt
 
Em đã chuyển quà xong cho 4 anh đạt giải nhé!!!
Còn về món quà thì sẽ được giữ bí mật đến khi các anh nhận.
 
Em đã chuyển quà xong cho 4 anh đạt giải nhé!!!
Còn về món quà thì sẽ được giữ bí mật đến khi các anh nhận.
Hôm nay dhn46 đã nhận được quà từ "Giải pháp Excel", dhn46 rất vui khi cầm trên tay món quà này.

Cuộc thi nhưng ít thành viên tham gia nên dhn46 may mắn có giải với bài thi sơ sài đã làm. Nhưng qua những lần thi dhn46 thấy mình đã học được nhiều hơn từ GPE, và càng tỏ lòng cảm ơn những "thầy" ra đề, đó là tâm huyết là sự nhiệt thành trong từng câu hỏi của mỗi cuộc thi.

dhn46 chúc GPE ngày càng phát triển!

Ảnh012.jpg


Ảnh015.jpg

Ảnh017.jpg

(Không hiểu sao dhn46 không hiện ảnh lên được, nhờ ban quản trị hiện ảnh lên giùm)
 
Lần chỉnh sửa cuối:
Hôm nay dhn46 đã nhận được quà từ "Giải pháp Excel", dhn46 rất vui khi cầm trên tay món quà này.

Cuộc thi nhưng ít thành viên tham gia nên dhn46 may mắn có giải với bài thi sơ sài đã làm. Nhưng qua những lần thi dhn46 thấy mình đã học được nhiều hơn từ GPE, và càng tỏ lòng cảm ơn những "thầy" ra đề, đó là tâm huyết là sự nhiệt thành trong từng câu hỏi của mỗi cuộc thi.

dhn46 chúc GPE ngày càng phát triển!


View attachment 126201

View attachment 126202

ATTACH]


(Không hiểu sao dhn46 không hiện ảnh lên được, nhờ ban quản trị hiện ảnh lên giùm)
Có phải thêm cặp
vào ko nhỉ?
 
Hôm nay hoangminhtien cũng đã nhận được quà từ GPE, Cám ơn GPE đã tạo ra sân chơi bổ ích.
Nếu như cuộc thi này mà có nhiều người tham gia thì sẽ còn vui hơn nữa và có lẽ khi đó quà này sẽ thuộc về phần người khác.
Book.jpg
 
Hôm nay hoangminhtien cũng đã nhận được quà từ GPE, Cám ơn GPE đã tạo ra sân chơi bổ ích.
Nếu như cuộc thi này mà có nhiều người tham gia thì sẽ còn vui hơn nữa và có lẽ khi đó quà này sẽ thuộc về phần người khác.
Book.jpg

Hẹn sang năm thi thố a nhé.. hị hị
 
Lần chỉnh sửa cuối:
Cám ơn , vocamxuc đã nhận được giải thưởng là 1 cuốn truyện "Thiên nga đen", tôi rất thích cuốn này. Cám ơn BTC, cám ơn tất cả. Một giải thưởng có ý nghĩa.

Đặc biệt cám ơn moneymong.pt nha (hẹn tái ngộ sau ha).

xin trích ra đây lời giới thiệu món quà.
theo http://www.vinabook.com/c463/thien-nga-den-p39121.html

tóm tắt giới thiệu truyện:

Thiên Nga Đen là một biến cố tưởng chừng như không thể xảy ra với ba đặc điểm chính: không thể dự đoán, có tác động nặng nề và sau khi nó xảy ra, người ta dựng lên một lời giải thích để khiến nó ít ngẫu nhiên hơn, dễ dự đoán hơn bản chất thật của nó. Thành công bất ngờ của Google có thể xem là một "thiên nga đen", sự kiện ngày 11 tháng 9 cũng vậy. Với Nassim Nicholas Taleb, "thiên nga đen" ẩn chứa hầu như mọi điều về thế giới này, từ sự trỗi dậy của tôn giáo đến những biến cố trong cuộc sống của chính chúng ta

Vì sao chúng ta không nhận thấy những hiện tượng "thiên nga đen" mãi đến sau khi chúng xảy ra? Theo Taleb, một phần là vì con người chúng ta tự trói buộc mình vào những cái chi tiết trong khi lẽ ra nên tập trung vào cái tổng quát. Chúng ta tập trung vào những gì đã biết trong khi hết lần này đến lần khác bỏ qua những thứ mình chưa biết. Do đó, chúng ta không thể đánh giá được các cơ hội, không thể kháng lại xu hướng đơn giản hóa, tường thuật và phân loại, và không đủ phóng khoáng để tưởng thưởng cho những ai có thể hình dung ra được "những cái không thể"

Tinh tế, bao quát và đầy kinh ngạc, Thiên Nga Đen sẽ thay đổi cách nhìn của bạn về thế giới. Taleb thực sự là tác giả của thể loại sách khai trí với những câu chuyện dí dỏm, ngông cuồng và khác thường. Ông là người có kiến thức uyên thâm trong nhiều lĩnh vực, từ khoa học nhận thức, kinh doanh cho đến lý thuyết xác suất. Thiên Nga Đen là cuốn sách mang tính bước ngoặc - bản thân nó chính là một "thiên nga đen


39121.jpg
 
Web KT
Back
Top Bottom