vonguyen3745
Thành viên hoạt động
- Tham gia
- 18/7/09
- Bài viết
- 145
- Được thích
- 5
Bạn chỉ cần đếm có bao nhiêu dấu phẩy trong cột C, rồi cộng thêm 1.Em muốn tính tổng số tiết của giáo viên/tuần. (phần phân công môn dạy em xuất từ phần mềm ra nên nó có cấu trúc như vậy rồi)
Tổng số tiết toán+ vật lý là kết quả =25 hay =5.View attachment 264106
Em muốn tính tổng số tiết của giáo viên/tuần. (phần phân công môn dạy em xuất từ phần mềm ra nên nó có cấu trúc như vậy rồi)
bạn tham khảo công thức trong fileView attachment 264106
Em muốn tính tổng số tiết của giáo viên/tuần. (phần phân công môn dạy em xuất từ phần mềm ra nên nó có cấu trúc như vậy rồi)
Toán (6) : 4 lớp * 4 tiết 1 tuần= 16 tiếtTổng số tiết toán+ vật lý là kết quả =25 hay =5.
tổng của 1 lớp thì = 5 rồi nhân với số lớp dạyTổng số tiết toán+ vật lý là kết quả =25 hay =5.
vậy file của mình tính sai rồi ạtổng của 1 lớp thì = 5 rồi nhân với số lớp dạy
Công thức trong D3:nhưng các dấu phẩy số tiết nó không bằng nhau bác à
=LEN(C3)-LEN(SUBSTITUTE(C3,",",""))+1
Nó còn phải tính số tiết của mỗi môn, mỗi khối khác nhau nữa mà bácCông thức trong D3:
Mã:=LEN(C3)-LEN(SUBSTITUTE(C3,",",""))+1
Kêu người làm phần mềm xuất ra luôn.Nó còn phải tính số tiết của mỗi môn, mỗi khối khác nhau nữa mà bác
Chỉ có thể giúp bạn bằng VBA.View attachment 264106
Em muốn tính tổng số tiết của giáo viên/tuần. (phần phân công môn dạy em xuất từ phần mềm ra nên nó có cấu trúc như vậy rồi)
Sub tinhtongtiet()
Dim i%, monhoc$, khoihoc$, bangtt(), lr%, ar(), listmon, listkhoi, i1%, c%, r%, j%
bangtt = Range("H2:V6").Value2
lr = Range("C" & Rows.Count).End(3).Row
ar = Range("C3:D" & lr).Value2
For i = 1 To UBound(ar)
ar(i, 2) = 0
listmon = Split(ar(i, 1), ")")
For i1 = LBound(listmon) To UBound(listmon) - 1
monhoc = Trim(Replace(Split(listmon(i1), "(")(0), ",", ""))
listkhoi = Split(Split(listmon(i1), "(")(1), ",")
For j = LBound(listkhoi) To UBound(listkhoi)
If Len(listkhoi(j)) > 1 Then
khoihoc = Val(Left(Trim(listkhoi(j)), 1))
For c = 2 To UBound(bangtt, 2)
If bangtt(1, c) = monhoc Then
For r = 2 To UBound(bangtt)
If bangtt(r, 1) = khoihoc Then
ar(i, 2) = ar(i, 2) + bangtt(r, c)
Exit For
End If
Next
End If
Next
End If
Next
Next
Next
Range("C3").Resize(UBound(ar), 2) = ar
End Sub
Cái này có người đúng có người sai bác à1 code khác bạn tham khảo
Mã:Sub tinhtongtiet() Dim i%, monhoc$, khoihoc$, bangtt(), lr%, ar(), listmon, listkhoi, i1%, c%, r%, j% bangtt = Range("H2:V6").Value2 lr = Range("C" & Rows.Count).End(3).Row ar = Range("C3:D" & lr).Value2 For i = 1 To UBound(ar) ar(i, 2) = 0 listmon = Split(ar(i, 1), ")") For i1 = LBound(listmon) To UBound(listmon) - 1 monhoc = Trim(Replace(Split(listmon(i1), "(")(0), ",", "")) listkhoi = Split(Split(listmon(i1), "(")(1), ",") For j = LBound(listkhoi) To UBound(listkhoi) If Len(listkhoi(j)) > 1 Then khoihoc = Val(Left(Trim(listkhoi(j)), 1)) For c = 2 To UBound(bangtt, 2) If bangtt(1, c) = monhoc Then For r = 2 To UBound(bangtt) If bangtt(r, 1) = khoihoc Then ar(i, 2) = ar(i, 2) + bangtt(r, c) Exit For End If Next End If Next End If Next Next Next Range("C3").Resize(UBound(ar), 2) = ar End Sub
Không biết sai chỗ nào bạn nhỉ. Có 1 điều là trong bảng của bạn có môn "Sinh học" không khớp giữa cột C và bảng số tiết/môn. Theo mình thấy là sai font chữ.Thanks các bác, em chỉ cần kết quả, bằng hàm hay code đều được ạ. Thanks!
Bài đã được tự động gộp:
Cái này có người đúng có người sai bác à
Code bác Bate làm giúp em chạy chuẩn rồi ạ
Không có "Bate" đâu.Thanks các bác, em chỉ cần kết quả, bằng hàm hay code đều được ạ. Thanks!
Bài đã được tự động gộp:
Cái này có người đúng có người sai bác à
Code bác Bate làm giúp em chạy chuẩn rồi ạ
Sorry bác, hôm qua em chạy nó báo sai, hôm nay chạy lại thấy kết quả đúng, chắc hôm qua em nhầm chỗ nào đấy.Không biết sai chỗ nào bạn nhỉ. Có 1 điều là trong bảng của bạn có môn "Sinh học" không khớp giữa cột C và bảng số tiết/môn. Theo mình thấy là sai font chữ.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2