Thế nên chủ đề cuộc thi mới là Excel toàn dzriệnXin chúc mừng mọi người. Nếu mà em làm dc bài chart chắc cũng có giải rùi
![]()
Thế nên chủ đề cuộc thi mới là Excel toàn dzriệnXin chúc mừng mọi người. Nếu mà em làm dc bài chart chắc cũng có giải rùi
![]()
Lỗi này cơ bản quá, may mà thầy chỉ trừ có 0.252. 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.
Bài này em format datapoint mà thầy. hihi3. 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.
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à.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.
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ầyFile đí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
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
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
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.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
hoangminhtien đã viết:Bài này em format datapoint mà thầy. hihi
Lê Duy Thương đã viết:sao không có bài của hoàng minh tiến thầy nhỉ
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 ạ.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
Như đã nói, đề thi sẽ gồm bốn phần, mỗi phần chấm điểm riêng.
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.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
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.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é!
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
'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
Thay vì nói xuông, bạn đưa file bạn nhắm mắt làm trong 5 phút mà chỉ dùng ofset và vlookup lên cho mọi người học hỏi nhé.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
Đồng chí này đã bị đình chỉ hoạt động rồi mà anh!Thay vì nói xuông, bạn đưa file bạn nhắm mắt làm trong 5 phút mà chỉ dùng ofset và vlookup lên cho mọi người học hỏi nhé.
Rất xin lỗi anh/chị vì đến hôm nay mà chưa trao quà cho anh/chị đạt giả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
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.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.
Có phải thêm cặpHô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
![]()
(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)
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.
![]()