thanh tong
Thành viên hoạt động



- Tham gia
- 27/5/10
- Bài viết
- 122
- Được thích
- 11



Một cách dùng VBAMình cần các bạn giúp mình công thức hoặc code trả về giá trị cần tìm kiếm
để rõ hơn mình đã ghi trong file đính kèm các bạn đọc và giúp mình nhé.



Cảm ơn bạn nhiều vì đã suy nghĩ giúp mình xong giờ mình lại có chút thay đổi vì bạn nhắc là có gv nào dậy 2,3 môn trên 1 lơp không? thì mình mới nhớ là có, hơn nữa bên vùng kiểm tra mình không dùng list ở phần tên các môn nữa mà tên các môn là cố đinh.Mình muốn là khi nhập vào bên dữ liệu thì tên giáo viên hiện lên tương ứng với môn và lớp ở bên bảng kiểm tra.Một cách dùng VBA
Cứ thêm, bớt sửa dữ liệu, xong thì bấm nút
Chú ý về dữ liệu ở 2 bảng, nên dùng Validation ở cả 2 để thống nhất dữ liệu
Có trường hợp nào có nhiều hơn một giáo viên dạy cùng một môn trong cùng một lớp không ? Nếu có phải chỉnh code lại tý tẹo
Thân



=TachGV(Vùng dữ liệu của bạn) <=> =TachGV(A3:I10)
Function TachGV(ByVal Rng As Range)
Dim i As Long, j As Long, k As Long
Dim Arr, Res
Arr = Rng.Value
ReDim Res(1 To UBound(Arr, 1) * UBound(Arr, 2), 1 To 2)
For i = 1 To UBound(Arr, 1)
For j = 2 To UBound(Arr, 2)
If Len(Arr(i, j)) Then
k = k + 1
Res(k, 1) = Arr(i, 1)
Res(k, 2) = Arr(i, j)
End If
Next
Next
TachGV = Res
End Function



OK rồiBạn dùng hàm mảng tự tạo dưới đây, copy vào 1 modul nhé.
Cách dùng: bôi đen 2 cột bất kỳ với nhiều dòng ví dụ từ A20:B40, sau đó gõ
Kết thúc bằng Ctrl +Shift + EnterMã:=TachGV(Vùng dữ liệu của bạn) <=> =TachGV(A3:I10)
Mã:Function TachGV(ByVal Rng As Range) Dim i As Long, j As Long, k As Long Dim Arr, Res Arr = Rng.Value ReDim Res(1 To UBound(Arr, 1) * UBound(Arr, 2), 1 To 2) For i = 1 To UBound(Arr, 1) For j = 2 To UBound(Arr, 2) If Len(Arr(i, j)) Then k = k + 1 Res(k, 1) = Arr(i, 1) Res(k, 2) = Arr(i, j) End If Next Next TachGV = Res End Function