Mong các bạn giúp mình thu gọn liệt kê (1 người xem)

  • Thread starter Thread starter khoa186
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

khoa186

Thành viên chính thức
Tham gia
23/11/07
Bài viết
64
Được thích
4
Mong các anh chị em giúp đỡ , mình có 1 bảng phân công giáo viên thế này , mình mong muốn nó rút gọn lại giống như file đính kèm , mong các bạn giúp đỡ , cảm ơn các bạn
HỌ TÊNTHỰC TẾMONG MUỐN
Lâm Kiều Trinh6A12,7A1,7A2,7A3,7A4,7A5,7A6,7A11,7A12,7A13,7A14,7A15,7A16,9A3,9A6,9A7,9A8,9A9,9A10,9A11,9A12,9A13,9A14,9A15,9A166A12,7A1-->7A6,7A11-->7A16,9A3,9A6-->9A16
Lương Thị Thanh Thủy8A1,8A2,8A3,8A4,8A5,8A6,8A7,8A8,8A9,8A10,8A11,8A12,8A13,8A14,8A15,8A16,9A1,9A2,9A3,9A4,9A58A1-->8A16,9A1-->9A5
Nguyễn Thu Thủy6A1,6A2,6A3,6A4,6A5,6A6,6A7,6A8,6A9,6A10,6A11,6A12,6A13,6A14,6A15,6A16,6A17,7A7,7A8,7A9,7A106A1-->6A17,7A7-->7A10
 

File đính kèm

up, mong các bạn có thể giúp mình
 
Mong các anh chị em giúp đỡ , mình có 1 bảng phân công giáo viên thế này , mình mong muốn nó rút gọn lại giống như file đính kèm , mong các bạn giúp đỡ , cảm ơn các bạn
HỌ TÊNTHỰC TẾMONG MUỐN
Lâm Kiều Trinh6A12,7A1,7A2,7A3,7A4,7A5,7A6,7A11,7A12,7A13,7A14,7A15,7A16,9A3,9A6,9A7,9A8,9A9,9A10,9A11,9A12,9A13,9A14,9A15,9A166A12,7A1-->7A6,7A11-->7A16,9A3,9A6-->9A16
Lương Thị Thanh Thủy8A1,8A2,8A3,8A4,8A5,8A6,8A7,8A8,8A9,8A10,8A11,8A12,8A13,8A14,8A15,8A16,9A1,9A2,9A3,9A4,9A58A1-->8A16,9A1-->9A5
Nguyễn Thu Thủy6A1,6A2,6A3,6A4,6A5,6A6,6A7,6A8,6A9,6A10,6A11,6A12,6A13,6A14,6A15,6A16,6A17,7A7,7A8,7A9,7A106A1-->6A17,7A7-->7A10

Dùng hàm tự tạo
Mã:
Function GopLop(ByVal iStr As String) As String
  Dim Arr(), Stt(), S, Res$
  Dim tmp$, iKey$, sN&, n&, L&, i&, j&
 
  If iStr = Empty Then Exit Function
  ReDim Arr(1 To 100, 1 To 2)
  S = Split(iStr, ",")
  With CreateObject("scripting.dictionary")
    For n = 0 To UBound(S)
      tmp = S(n)
      L = Len(tmp)
      For j = L To 1 Step -1
        If IsNumeric(Mid(tmp, j, 1)) = False Then
          iKey = Mid(tmp, 1, j)
          If .exists(iKey) = False Then
            k = k + 1
            .Add iKey, k
            Arr(k, 1) = iKey
            Arr(k, 2) = "," & Replace(tmp, iKey, "")
          Else
            ik = .Item(iKey)
            Arr(ik, 2) = Arr(ik, 2) & "," & Replace(tmp, iKey, "")
          End If
          Exit For
        End If
      Next j
    Next n
  End With
 
  For i = 1 To k
    tmp = Arr(i, 1)
    ReDim Stt(0 To 100)
    S = Split(Arr(i, 2), ",")
    For j = 1 To UBound(S)
      Stt(CLng(S(j))) = "1"
    Next j
    For j = 1 To 99
      If Stt(j) = "1" Then
        If Stt(j - 1) = Empty Then
          Res = Res & "," & tmp & j
        End If
        If Stt(j + 1) = Empty Then
          If Stt(j - 1) = "1" Then
            Res = Res & "-->" & tmp & j
          End If
        End If
      End If
    Next j
  Next i
  GopLop = Mid(Res, 2, Len(Res))
End Function
 

File đính kèm

ôi dã man quá , cảm ơn bạn rất rất nhiều
Bài đã được tự động gộp:

GIỜ VẪN CHƯA HẾT PHÊ , CÁC BẠN GIỎI THẬT
 
Lần chỉnh sửa cuối:
Dùng hàm tự tạo
Mã:
Function GopLop(ByVal iStr As String) As String
  Dim Arr(), Stt(), S, Res$
  Dim tmp$, iKey$, sN&, n&, L&, i&, j&

  If iStr = Empty Then Exit Function
  ReDim Arr(1 To 100, 1 To 2)
  S = Split(iStr, ",")
  With CreateObject("scripting.dictionary")
    For n = 0 To UBound(S)
      tmp = S(n)
      L = Len(tmp)
      For j = L To 1 Step -1
        If IsNumeric(Mid(tmp, j, 1)) = False Then
          iKey = Mid(tmp, 1, j)
          If .exists(iKey) = False Then
            k = k + 1
            .Add iKey, k
            Arr(k, 1) = iKey
            Arr(k, 2) = "," & Replace(tmp, iKey, "")
          Else
            ik = .Item(iKey)
            Arr(ik, 2) = Arr(ik, 2) & "," & Replace(tmp, iKey, "")
          End If
          Exit For
        End If
      Next j
    Next n
  End With

  For i = 1 To k
    tmp = Arr(i, 1)
    ReDim Stt(0 To 100)
    S = Split(Arr(i, 2), ",")
    For j = 1 To UBound(S)
      Stt(CLng(S(j))) = "1"
    Next j
    For j = 1 To 99
      If Stt(j) = "1" Then
        If Stt(j - 1) = Empty Then
          Res = Res & "," & tmp & j
        End If
        If Stt(j + 1) = Empty Then
          If Stt(j - 1) = "1" Then
            Res = Res & "-->" & tmp & j
          End If
        End If
      End If
    Next j
  Next i
  GopLop = Mid(Res, 2, Len(Res))
End Function
đầu tiên cảm ơn bạn đã giúp mình , nhưng bạn có thể giúp mình sửa lại chút là ví dụ 2 lớp xen kẽ nhau , ví dụ 6a1,6a2 không cần phải hiện 6a1-->6a2 , trên 3 lớp kế nhau thì mới hiện --> , mình cảm ơn rất nhiều
 
Mong các anh chị em giúp đỡ , mình có 1 bảng phân công giáo viên thế này , mình mong muốn nó rút gọn lại giống như file đính kèm , mong các bạn giúp đỡ , cảm ơn các bạn
HỌ TÊNTHỰC TẾMONG MUỐN
Lâm Kiều Trinh6A12,7A1,7A2,7A3,7A4,7A5,7A6,7A11,7A12,7A13,7A14,7A15,7A16,9A3,9A6,9A7,9A8,9A9,9A10,9A11,9A12,9A13,9A14,9A15,9A166A12,7A1-->7A6,7A11-->7A16,9A3,9A6-->9A16
Lương Thị Thanh Thủy8A1,8A2,8A3,8A4,8A5,8A6,8A7,8A8,8A9,8A10,8A11,8A12,8A13,8A14,8A15,8A16,9A1,9A2,9A3,9A4,9A58A1-->8A16,9A1-->9A5
Nguyễn Thu Thủy6A1,6A2,6A3,6A4,6A5,6A6,6A7,6A8,6A9,6A10,6A11,6A12,6A13,6A14,6A15,6A16,6A17,7A7,7A8,7A9,7A106A1-->6A17,7A7-->7A10
Cho bạn thêm cách khác với chuỗi phải xếp theo thứ tự tăng dần
Mã:
Function cnrN(ByVal str As String, Optional ByVal n As Long = 1)
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 1 Then
        .Pattern = "(\d+)([A-Z])(\d+)"
        cnrN = Val(.Execute(str)(0).SubMatches(0) & AscW(.Execute(str)(0).SubMatches(1)) & Format(.Execute(str)(0).SubMatches(2), "00"))
    Else
        .Pattern = "\,{2,}"
         cnrN = .Replace(str, "-->")
    End If
End With
End Function
Function SStr(ByVal str As String) As String
Dim i As Long, arrN, arrR
arrSTR = Split(str, ",")
ReDim arrR(0 To UBound(arrSTR))
arrR(0) = arrSTR(0): arrR(UBound(arrSTR)) = arrSTR(UBound(arrSTR))
For i = 1 To UBound(arrSTR) - 1
    If Not (cnrN(arrSTR(i)) = cnrN(arrSTR(i - 1)) + 1 And cnrN(arrSTR(i)) = cnrN(arrSTR(i + 1)) - 1) Then arrR(i) = arrSTR(i)
Next
SStr = cnrN(Join(arrR, ","), 2)
End Function
CÔng thức: =SStr(B2)
 
Lần chỉnh sửa cuối:
đầu tiên cảm ơn bạn đã giúp mình , nhưng bạn có thể giúp mình sửa lại chút là ví dụ 2 lớp xen kẽ nhau , ví dụ 6a1,6a2 không cần phải hiện 6a1-->6a2 , trên 3 lớp kế nhau thì mới hiện --> , mình cảm ơn rất nhiều
Chỉnh lại
Mã:
Function GopLop(ByVal iStr As String) As String
  Dim Arr(), Stt(), S, Res$
  Dim tmp$, iKey$, sN&, n&, L&, i&, j&
 
  If iStr = Empty Then Exit Function
  ReDim Arr(1 To 100, 1 To 2)
  S = Split(iStr, ",")
  With CreateObject("scripting.dictionary")
    For n = 0 To UBound(S)
      tmp = S(n)
      L = Len(tmp)
      For j = L To 1 Step -1
        If IsNumeric(Mid(tmp, j, 1)) = False Then
          iKey = Mid(tmp, 1, j)
          If .exists(iKey) = False Then
            k = k + 1
            .Add iKey, k
            Arr(k, 1) = iKey
            Arr(k, 2) = "," & Replace(tmp, iKey, "")
          Else
            ik = .Item(iKey)
            Arr(ik, 2) = Arr(ik, 2) & "," & Replace(tmp, iKey, "")
          End If
          Exit For
        End If
      Next j
    Next n
  End With
 
  For i = 1 To k
    tmp = Arr(i, 1)
    ReDim Stt(-1 To 100)
    S = Split(Arr(i, 2), ",")
    For j = 1 To UBound(S)
      Stt(CLng(S(j))) = "1"
    Next j
    For j = 1 To 99
      If Stt(j) = "1" Then
        If Stt(j - 1) = Empty Then
          Res = Res & "," & tmp & j
        End If
        If Stt(j + 1) = Empty Then
          If Stt(j - 1) = "1" Then
            If Stt(j - 2) = Empty Then
              Res = Res & "," & tmp & j
            Else
              Res = Res & "-->" & tmp & j
            End If
          End If
        End If
      End If
    Next j
  Next i
  GopLop = Mid(Res, 2, Len(Res))
End Function
Bài đã được tự động gộp:

Cho bạn thêm cách khác:
Mã:
Function cnrN(ByVal str As String, Optional ByVal n As Long = 1)
With CreateObject("vbscript.regexp")
    .Global = True
    If n = 1 Then
        .Pattern = "(\d+)([A-Z])(\d+)"
        cnrN = Val(.Execute(str)(0).SubMatches(0) & AscW(.Execute(str)(0).SubMatches(1)) & Format(.Execute(str)(0).SubMatches(2), "00"))
    Else
        .Pattern = "\,{2,}"
         cnrN = .Replace(str, "-->")
    End If
End With
End Function
Function SStr(ByVal str As String) As String
Dim i As Long, arrN, arrR
arrSTR = Split(str, ",")
ReDim arrR(0 To UBound(arrSTR))
arrR(0) = arrSTR(0): arrR(UBound(arrSTR)) = arrSTR(UBound(arrSTR))
For i = 1 To UBound(arrSTR) - 1
    If Not (cnrN(arrSTR(i)) = cnrN(arrSTR(i - 1)) + 1 And cnrN(arrSTR(i)) = cnrN(arrSTR(i + 1)) - 1) Then arrR(i) = arrSTR(i)
Next
SStr = cnrN(Join(arrR, ","), 2)
End Function
CÔng thức: =SStr(B2)
Nếu chưa xếp thứ tự, kết quả sẽ lệch, ví dụ: 6A11,6A12,7A1,7A3,7A2,6A13
kết quả sẽ là: 6A11,6A12,7A1,7A3,7A2,6A13
 
Lần chỉnh sửa cuối:
Chỉnh lại
Mã:
Function GopLop(ByVal iStr As String) As String
  Dim Arr(), Stt(), S, Res$
  Dim tmp$, iKey$, sN&, n&, L&, i&, j&

  If iStr = Empty Then Exit Function
  ReDim Arr(1 To 100, 1 To 2)
  S = Split(iStr, ",")
  With CreateObject("scripting.dictionary")
    For n = 0 To UBound(S)
      tmp = S(n)
      L = Len(tmp)
      For j = L To 1 Step -1
        If IsNumeric(Mid(tmp, j, 1)) = False Then
          iKey = Mid(tmp, 1, j)
          If .exists(iKey) = False Then
            k = k + 1
            .Add iKey, k
            Arr(k, 1) = iKey
            Arr(k, 2) = "," & Replace(tmp, iKey, "")
          Else
            ik = .Item(iKey)
            Arr(ik, 2) = Arr(ik, 2) & "," & Replace(tmp, iKey, "")
          End If
          Exit For
        End If
      Next j
    Next n
  End With

  For i = 1 To k
    tmp = Arr(i, 1)
    ReDim Stt(-1 To 100)
    S = Split(Arr(i, 2), ",")
    For j = 1 To UBound(S)
      Stt(CLng(S(j))) = "1"
    Next j
    For j = 1 To 99
      If Stt(j) = "1" Then
        If Stt(j - 1) = Empty Then
          Res = Res & "," & tmp & j
        End If
        If Stt(j + 1) = Empty Then
          If Stt(j - 1) = "1" Then
            If Stt(j - 2) = Empty Then
              Res = Res & "," & tmp & j
            Else
              Res = Res & "-->" & tmp & j
            End If
          End If
        End If
      End If
    Next j
  Next i
  GopLop = Mid(Res, 2, Len(Res))
End Function
Bài đã được tự động gộp:


Nếu chưa xếp thứ tự, kết quả sẽ lệch, ví dụ: 6A11,6A12,7A1,7A3,7A2,6A13
kết quả sẽ là: 6A11,6A12,7A1,7A3,7A2,6A13
Tôi quên ghi chú, chuỗi phải xếp theo thứ tự tăng dần:).
 
Chỉnh lại
Mã:
Function GopLop(ByVal iStr As String) As String
  Dim Arr(), Stt(), S, Res$
  Dim tmp$, iKey$, sN&, n&, L&, i&, j&

  If iStr = Empty Then Exit Function
  ReDim Arr(1 To 100, 1 To 2)
  S = Split(iStr, ",")
  With CreateObject("scripting.dictionary")
    For n = 0 To UBound(S)
      tmp = S(n)
      L = Len(tmp)
      For j = L To 1 Step -1
        If IsNumeric(Mid(tmp, j, 1)) = False Then
          iKey = Mid(tmp, 1, j)
          If .exists(iKey) = False Then
            k = k + 1
            .Add iKey, k
            Arr(k, 1) = iKey
            Arr(k, 2) = "," & Replace(tmp, iKey, "")
          Else
            ik = .Item(iKey)
            Arr(ik, 2) = Arr(ik, 2) & "," & Replace(tmp, iKey, "")
          End If
          Exit For
        End If
      Next j
    Next n
  End With

  For i = 1 To k
    tmp = Arr(i, 1)
    ReDim Stt(-1 To 100)
    S = Split(Arr(i, 2), ",")
    For j = 1 To UBound(S)
      Stt(CLng(S(j))) = "1"
    Next j
    For j = 1 To 99
      If Stt(j) = "1" Then
        If Stt(j - 1) = Empty Then
          Res = Res & "," & tmp & j
        End If
        If Stt(j + 1) = Empty Then
          If Stt(j - 1) = "1" Then
            If Stt(j - 2) = Empty Then
              Res = Res & "," & tmp & j
            Else
              Res = Res & "-->" & tmp & j
            End If
          End If
        End If
      End If
    Next j
  Next i
  GopLop = Mid(Res, 2, Len(Res))
End Function
Bài đã được tự động gộp:


Nếu chưa xếp thứ tự, kết quả sẽ lệch, ví dụ: 6A11,6A12,7A1,7A3,7A2,6A13
kết quả sẽ là: 6A11,6A12,7A1,7A3,7A2,6A13
đầu tiên xin cảm ơn bác , mong bác giúp mình 1 vấn đề này nữa nha .Giờ em lại lòi thêm 1 việc nữa là bắt tách ra theo từng khối lớp ví dụ . Cô uyên khối 6 từ 6a7 đến 6a9 (chỉ cần ghi số lớp phía sau 7-->9), khối 7 không có , khối 8 có 8a8 thì điền số 8 phía sau chữ a , khối 9 thì có 2 lớp 9a2,9a8 thì điền 2,8 . Một lần nữa xin cảm ơn bác
Họ và tênMôn dạyLớp dạy được phân côngKHỐI 6KHỐI 7KHỐI 8KHỐI 9
Trần Thị Đỗ UyênVăn6a7,6a8,6a9,8A8,9A2,9A87-->982,8
Nguyễn Trọng Ngọc Minh TrangVăn8A2,9A3,9A1523,15
Phạm Thị Phượng Văn6A13,6A14,8A6,8A913,146,9
Nguyễn Thị Xuân DungVăn7A4,7A13,8A10,8A154,1310,15
Trần Thị Mỹ DuyênVăn6A6,9A6,9A966,9
Tôn Nữ Nhật HằngVăn6A3,6A7,7A33,73
Nguyễn Thị Bích HạnhVăn8A4,8A5,9A7,9A134,57,13
 

File đính kèm

đầu tiên xin cảm ơn bác , mong bác giúp mình 1 vấn đề này nữa nha .Giờ em lại lòi thêm 1 việc nữa là bắt tách ra theo từng khối lớp ví dụ . Cô uyên khối 6 từ 6a7 đến 6a9 (chỉ cần ghi số lớp phía sau 7-->9), khối 7 không có , khối 8 có 8a8 thì điền số 8 phía sau chữ a , khối 9 thì có 2 lớp 9a2,9a8 thì điền 2,8 . Một lần nữa xin cảm ơn bác
Họ và tênMôn dạyLớp dạy được phân côngKHỐI 6KHỐI 7KHỐI 8KHỐI 9
Trần Thị Đỗ UyênVăn6a7,6a8,6a9,8A8,9A2,9A87-->982,8
Nguyễn Trọng Ngọc Minh TrangVăn8A2,9A3,9A1523,15
Phạm Thị PhượngVăn6A13,6A14,8A6,8A913,146,9
Nguyễn Thị Xuân DungVăn7A4,7A13,8A10,8A154,1310,15
Trần Thị Mỹ DuyênVăn6A6,9A6,9A966,9
Tôn Nữ Nhật HằngVăn6A3,6A7,7A33,73
Nguyễn Thị Bích HạnhVăn8A4,8A5,9A7,9A134,57,13
Ngoài lớp A như 6A7 còn lớp B như 6B2 không?
 
xin lỗi bác , mấy nay ko lên mạng được nên không trả lời bác được , bên mình chỉ có lớp A thôi bác
Mã:
Function GopKhoi(ByVal iStr As String, ByVal Khoi As String) As String
  Dim Arr(), S, tmp$, i&, j
 
  If iStr = Empty Or Khoi = Empty Then Exit Function
  ReDim Arr(-1 To 100)
  S = Split(Replace(iStr, " ", ""), ",")
  For i = 0 To UBound(S)
    tmp = S(i)
    If Mid(tmp, 1, 1) = Khoi Then
      j = Mid(tmp, 3, 2)
      If IsNumeric(j) Then
        If j > 0 Then Arr(j) = "1"
      End If
    End If
  Next i
  tmp = Empty
  For j = 1 To 99
    If Arr(j) = "1" Then
      If Arr(j - 1) = Empty Then
        tmp = tmp & "," & j
      End If
      If Arr(j + 1) = Empty Then
        If Arr(j - 1) = "1" Then
          If Arr(j - 2) = Empty Then
            tmp = tmp & "," & j
          Else
            tmp = tmp & "-->" & j
          End If
        End If
      End If
    End If
  Next j
  GopKhoi = Mid(tmp, 2, Len(tmp))
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Mã:
Function GopKhoi(ByVal iStr As String, ByVal Khoi As String) As String
  Dim Arr(), S, tmp$, i&, j

  If iStr = Empty Or Khoi = Empty Then Exit Function
  ReDim Arr(-1 To 100)
  S = Split(Replace(iStr, " ", ""), ",")
  For i = 0 To UBound(S)
    tmp = S(i)
    If Mid(tmp, 1, 1) = Khoi Then
      j = Mid(tmp, 3, 2)
      If IsNumeric(j) Then
        If j > 0 Then Arr(j) = "1"
      End If
    End If
  Next i
  tmp = Empty
  For j = 1 To 99
    If Arr(j) = "1" Then
      If Arr(j - 1) = Empty Then
        tmp = tmp & "," & j
      End If
      If Arr(j + 1) = Empty Then
        If Arr(j - 1) = "1" Then
          If Arr(j - 2) = Empty Then
            tmp = tmp & "," & j
          Else
            tmp = tmp & "-->" & j
          End If
        End If
      End If
    End If
  Next j
  GopKhoi = Mid(tmp, 2, Len(tmp))
End Function
mình xin cảm ơn bác rất rất nhiều
 
Ngoài lớp A như 6A7 còn lớp
Mã:
Function GopKhoi(ByVal iStr As String, ByVal Khoi As String) As String
  Dim Arr(), S, tmp$, i&, j
 
  If iStr = Empty Or Khoi = Empty Then Exit Function
  ReDim Arr(-1 To 100)
  S = Split(Replace(iStr, " ", ""), ",")
  For i = 0 To UBound(S)
    tmp = S(i)
    If Mid(tmp, 1, 1) = Khoi Then
      j = Mid(tmp, 3, 2)
      If IsNumeric(j) Then
        If j > 0 Then Arr(j) = "1"
      End If
    End If
  Next i
  tmp = Empty
  For j = 1 To 99
    If Arr(j) = "1" Then
      If Arr(j - 1) = Empty Then
        tmp = tmp & "," & j
      End If
      If Arr(j + 1) = Empty Then
        If Arr(j - 1) = "1" Then
          If Arr(j - 2) = Empty Then
            tmp = tmp & "," & j
          Else
            tmp = tmp & "-->" & j
          End If
        End If
      End If
    End If
  Next j
  GopKhoi = Mid(tmp, 2, Len(tmp))
End Function
Vâng chào bác , trước em có nhờ bác code giúp em từ lớp dạy phân công ra từng cột , giờ em lại mong bác giúp ngược lại từ các cột giống bên trên bác code lại giúp em lớp dạy được phân công không ạ . Em cảm ơn bác nhiều
1661008104170.png
 

File đính kèm

Vâng chào bác , trước em có nhờ bác code giúp em từ lớp dạy phân công ra từng cột , giờ em lại mong bác giúp ngược lại từ các cột giống bên trên bác code lại giúp em lớp dạy được phân công không ạ . Em cảm ơn bác nhiều
View attachment 280145

Trong G2 mong muốn của bạn là "6a7,6a8,6a9 ..." mà không phải là "6A7,6A8,6A9 .." trong khi khối 8,9 lại là chữ hoa?

.
 
hoa thường gì cũng được bác ạ , chắc gấp quá mình gõ nhanh , nếu hoa được bác giúp em chữ hoa nhé

Đầu câu sao bạn không viết hoa? Giáo viên nên viết đúng chính tả.

PHP:
Public Function TachKhoi(ByVal rngTieuDe As Range, ByVal rngLich As Range) As String
Dim arrTieude, arrLich, i&, j&, temp$, v As Variant, vv As Variant
arrTieude = rngTieuDe.Value
arrLich = rngLich.Value
For i = 1 To UBound(arrLich, 2)

    If arrLich(1, i) <> "" Then
        temp = Right(arrTieude(1, i), 1) & "A"
        For Each v In Split(arrLich(1, i), ",")
            If v <> "" Then
                If InStr(1, v, "-->") = 0 Then
                    TachKhoi = TachKhoi & ", " & temp & v
                Else
                    vv = Split(v, "-->")
                    For j = vv(0) To vv(1)
                    TachKhoi = TachKhoi & ", " & temp & j
                Next j
            End If
            End If
        Next v
    End If
Next i
    If Len(TachKhoi) > 2 Then TachKhoi = VBA.Mid(TachKhoi, 3)
End Function

Công thức trong G2:

=TachKhoi($C$1:$F$1,C2:F2)

.
 
Đầu câu sao bạn không viết hoa? Giáo viên nên viết đúng chính tả.

PHP:
Public Function TachKhoi(ByVal rngTieuDe As Range, ByVal rngLich As Range) As String
Dim arrTieude, arrLich, i&, j&, temp$, v As Variant, vv As Variant
arrTieude = rngTieuDe.Value
arrLich = rngLich.Value
For i = 1 To UBound(arrLich, 2)

    If arrLich(1, i) <> "" Then
        temp = Right(arrTieude(1, i), 1) & "A"
        For Each v In Split(arrLich(1, i), ",")
            If v <> "" Then
                If InStr(1, v, "-->") = 0 Then
                    TachKhoi = TachKhoi & ", " & temp & v
                Else
                    vv = Split(v, "-->")
                    For j = vv(0) To vv(1)
                    TachKhoi = TachKhoi & ", " & temp & j
                Next j
            End If
            End If
        Next v
    End If
Next i
    If Len(TachKhoi) > 2 Then TachKhoi = VBA.Mid(TachKhoi, 3)
End Function

Công thức trong G2:

=TachKhoi($C$1:$F$1,C2:F2)

.
Thật xin lỗi bác mình bận việc quá nên không biết bác rep ,cảm ơn bác đã giúp mình. Bác ơi code chạy ok nhưng có chỗ ví dụ khối 6 , khối 7 không có phân công thì code chạy ra 6A0 , 7A0 , 8A6 .... , mình muốn chỗ nào trống mình bỏ qua được không bác . Mình xinc ảm ơn
Bài đã được tự động gộp:

Họ và tênMôn dạyKhối 6Khối 7Khối 8Khối 9Lớp dạy được phân công
Trần Minh TriếtToán8,9,10,116A0, 7A8, 7A9, 7A10, 7A11, 8A0, 9A0
Bị như vầy nè bác
 
Web KT

Bài viết mới nhất

Back
Top Bottom