Các bác giúp em tính chế độ cho học sinh được hưởng từ sheet data có sẵn với ạ
Tình hình là ở địa phương em học sinh dân tộc, vùng đặc biệt khó khăn được hưởng nhiều chế độ tuy nhiên giáo viên lại ít có điều kiện nghiên cứu dẫn đến đôi khi chi trả không chính xác, nên e đã tổng hợp các chế độ vào sheet data nhưng em muốn tạo 1 sheet để trình bày đơn giản kết quả dưới dạng nhập xuất (sheet ket qua) cho giáo viên dễ dàng xác định. Do trình độ có hạn nên e chưa biết cách làm, tức là ở phần nhập dữ liệu e muốn để dạng combo box để lựa chọn giá trị dễ dàng hơn chứ không phải dạng filter ạ. Còn phần hiển thị kết quả, e muốn thay đối kết quả ngay khi mình thay đổi giá trị phần khai báo ạ (trong file bác làm e ko thấy thay đổi ah), mong các bác diễn đàn giúp em ạ!
1. Phần nhập liệu bạn cứ làm dạng Data validation như #2 thì ổn hơn , đã không biết thì…đừng có màu mè làm gì cho mệt. Làm cái đơn giản để hiểu rồi thì từ từ mới làm cái cao siêu hơn, comboxbox chi cho mệt xác….
2. Về phần kết quả thì tôi viết cho bạn đoạn code tìm chính xác, chứ không có trường hợp cái này nằm trong cái kia như bạn nói…………. Tốt nhất bạn nên liệt kê những trường hợp nào là nằm trong cái nào………để ai đó giúp bạn thì có thể hiểu hơn!
————————————————————————
Bạn chọn thay đổi giá trị tại bất cứ cell nào từ B3->B10 thì code sẽ chạy. Điều kiện của 4 trường cuối cùng nếu chọn: tất cả các nhóm,…
Thì sẽ chạy lên hết các trường hợp.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$B$3" Or Target.Address = "$B$4" Or Target.Address = "$B$5" Or Target.Address = "$B$6" _
Or Target.Address = "$B$7" Or Target.Address = "$B$8" Or Target.Address = "$B$9" Or Target.Address = "$B$10" Then
Dim Sh As Worksheet, Arr()
Dim Rws As Long, J&, W&, dk1 As String, dk2 As String, dk3 As String, dk4 As String, dk5 As String, dk6 As String, _
dk7 As String, dk8 As String, dk51 As String, dk61 As String, dk71 As String, dk81 As String
dk1 = [B3].Value
dk2 = [B4].Value
dk3 = [B5].Value
dk4 = [B6].Value
dk5 = [B7].Value
dk6 = [B8].Value
dk7 = [B9].Value
dk8 = [B10].Value
dk51 = [K2].Value
dk61 = [L2].Value
dk71 = [M2].Value
dk81 = [N2].Value
Set Sh = Sheet1
With Sh.[A2]
Rws = .CurrentRegion.Rows.Count
Arr() = .Resize(Rws, 13).Value
End With
ReDim dArr(1 To Rws, 1 To 4)
For J = 1 To UBound(Arr())
If dk5 = dk51 Then
If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) And (Arr(J, 8) = dk7 Or dk7 = Empty) _
And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
W = 1 + W
dArr(W, 1) = Arr(J, 11)
dArr(W, 2) = Arr(J, 12)
dArr(W, 3) = Arr(J, 13)
dArr(W, 4) = Arr(J, 1)
End If
ElseIf dk6 = dk61 Then
If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 8) = dk7 Or dk7 = Empty) _
And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
W = 1 + W
dArr(W, 1) = Arr(J, 11)
dArr(W, 2) = Arr(J, 12)
dArr(W, 3) = Arr(J, 13)
dArr(W, 4) = Arr(J, 1)
End If
ElseIf dk7 = dk71 Then
If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) _
And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
W = 1 + W
dArr(W, 1) = Arr(J, 11)
dArr(W, 2) = Arr(J, 12)
dArr(W, 3) = Arr(J, 13)
dArr(W, 4) = Arr(J, 1)
End If
ElseIf dk8 = dk81 Then
If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) _
And (Arr(J, 8) = dk7 Or dk7 = Empty) Then
W = 1 + W
dArr(W, 1) = Arr(J, 11)
dArr(W, 2) = Arr(J, 12)
dArr(W, 3) = Arr(J, 13)
dArr(W, 4) = Arr(J, 1)
End If
Else
If (Arr(J, 2) = dk1 Or dk1 = Empty) And (Arr(J, 3) = dk2 Or dk2 = Empty) And (Arr(J, 4) = dk3 Or dk3 = Empty) _
And (Arr(J, 5) = dk4 Or dk4 = Empty) And (Arr(J, 6) = dk5 Or dk5 = Empty) And (Arr(J, 7) = dk6 Or dk6 = Empty) _
And (Arr(J, 8) = dk7 Or dk7 = Empty) And (Arr(J, 9) = dk8 Or dk8 = Empty) Then
W = 1 + W
dArr(W, 1) = Arr(J, 11)
dArr(W, 2) = Arr(J, 12)
dArr(W, 3) = Arr(J, 13)
dArr(W, 4) = Arr(J, 1)
End If
End If
Next J
If W Then
Sheet2.[A15].Resize(65000, 4).ClearContents
Sheet2.[A15].Resize(W, 4).Value = dArr()
End If
End If
Application.ScreenUpdating = True
End Sub
www.giaiphapexcel.com/diendan/threads/c%C3%A1c-b%C3%A1c-gi%C3%BAp-em-t%C3%ADnh-ch%E1%BA%BF-%C4%91%E1%BB%99-cho-h%E1%BB%8Dc-sinh-%C4%91%C6%B0%E1%BB%A3c-h%C6%B0%E1%BB%9Fng-t%E1%BB%AB-sheet-data-c%C3%B3-s%E1%BA%B5n-v%E1%BB%9Bi-%E1%BA%A1.106799/#post-664514
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bình luận