Ghép chữ theo thứ tự với n (500-1000) hàng, cột thì tùy ý

Liên hệ QC

Quang86vn

Thành viên mới
Tham gia
21/5/17
Bài viết
18
Được thích
0
Giới tính
Nam
Em nhờ các bác xem qua file dữ liệu và code chạy. Ghép chữ theo thứ tự với n (500-1000) hàng, cột thì tùy ý. Hiện tại code chỉ chạy đc với với 2 hàng và n cột
Xin cảm ơn các bác.
Sau đây là file và code.
 

File đính kèm

Em nhờ các bác xem qua file dữ liệu và code chạy. Ghép chữ theo thứ tự với n (500-1000) hàng, cột thì tùy ý. Hiện tại code chỉ chạy đc với với 2 hàng và n cột
Xin cảm ơn các bác.
Sau đây là file và code.
bạn chọn lại vùng đi nhé mình nghĩ là chỗ này bạn đặt 1000 vào thử xem.
Vung = [A1].Resize(1000, iCot)
 
Upvote 0
Các thầy xem giúp em ạ. Cảm ơn các thầy!
 
Upvote 0
Các thầy xem giúp em ạ. Cảm ơn các thầy!
Mã:
Public Sub RoiTung()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong, 1 To 1)
For I = 1 To UBound(Vung, 2)
    For J = 1 To UBound(Vung, 1)
             A(J, 1) = A(J, 1) & Vung(J, I)
    Next J
Next I
For m = 1 To UBound(A, 1)
iHang = Application.WorksheetFunction.Combin(Len(A(m, 1)), 2)
ReDim Mg(1 To iHang * (m + 2), 1 To idong)
For I = 1 To Len(A(m, 1)) - 1
    For J = I + 1 To Len(A(m, 1))
        K = K + 1
        Mg(K, 1) = Mid(A(m, 1), I, 1) & Mid(A(m, 1), J, 1): Mg(K + idong, 1) = Mid(A(m, 1), J, 1) & Mid(A(m, 1), I, 1)
    Next J
Next I
Sheet1.Range("f1").Offset(0, m).Resize(K * (m + 1), 1).Value = Mg
K = 0
Next m
End Sub
bạn xem có đúng ý bạn không nhé
 
Upvote 0
Mã:
Public Sub RoiTung()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong, 1 To 1)
For I = 1 To UBound(Vung, 2)
    For J = 1 To UBound(Vung, 1)
             A(J, 1) = A(J, 1) & Vung(J, I)
    Next J
Next I
For m = 1 To UBound(A, 1)
iHang = Application.WorksheetFunction.Combin(Len(A(m, 1)), 2)
ReDim Mg(1 To iHang * (m + 2), 1 To idong)
For I = 1 To Len(A(m, 1)) - 1
    For J = I + 1 To Len(A(m, 1))
        K = K + 1
        Mg(K, 1) = Mid(A(m, 1), I, 1) & Mid(A(m, 1), J, 1): Mg(K + idong, 1) = Mid(A(m, 1), J, 1) & Mid(A(m, 1), I, 1)
    Next J
Next I
Sheet1.Range("f1").Offset(0, m).Resize(K * (m + 1), 1).Value = Mg
K = 0
Next m
End Sub
bạn xem có đúng ý bạn không nhé
em chạy thử và thấy nó sai và thiếu ký tự ghép nữa bác xem có phải đúng không. cảm ơn bác
 

File đính kèm

Upvote 0
em chạy thử và thấy nó sai và thiếu ký tự ghép nữa bác xem có phải đúng không. cảm ơn bác
Mã:
Public Sub RoiTung()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong)
For I = 1 To UBound(Vung, 2)
    For J = 1 To UBound(Vung, 1)
             A(J) = A(J) & Vung(J, I)
    Next J
Next I
For m = 1 To UBound(A, 1)
iHang = Application.WorksheetFunction.Combin(Len(A(m)), 2)
ReDim Mg(1 To iHang * 2, 1 To idong)
For I = 1 To Len(A(m)) - 1
    For J = I + 1 To Len(A(m))
        K = K + 1
        Mg(K, 1) = Mid(A(m), I, 1) & Mid(A(m), J, 1): Mg(K + iHang, 1) = Mid(A(m), J, 1) & Mid(A(m), I, 1)
    Next J
Next I
Sheet1.Range("f1").Offset(0, m).Resize(K * 2, 1).Value = Mg
K = 0
Next m
End Sub
đây bạn xem nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mã:
Public Sub RoiTung()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong)
For I = 1 To UBound(Vung, 2)
    For J = 1 To UBound(Vung, 1)
             A(J) = A(J) & Vung(J, I)
    Next J
Next I
For m = 1 To UBound(A, 1)
iHang = Application.WorksheetFunction.Combin(Len(A(m)), 2)
ReDim Mg(1 To iHang * 2, 1 To idong)
For I = 1 To Len(A(m)) - 1
    For J = I + 1 To Len(A(m))
        K = K + 1
        Mg(K, 1) = Mid(A(m), I, 1) & Mid(A(m), J, 1): Mg(K + iHang, 1) = Mid(A(m), J, 1) & Mid(A(m), I, 1)
    Next J
Next I
Sheet1.Range("f1").Offset(0, m).Resize(K * 2, 1).Value = Mg
K = 0
Next m
End Sub
đây bạn xem nhé
Cảm ơn bác nhiều nhé. Chúc bác và gđ GPE cuối tuần vui vẻ!
 
Upvote 0
Về code chạy đúng nhưng cho lên 600 hàng và 16 ký tự chạy chậm và đợi rất lâu. Các bác các thầy xem có cách nào cải thiện tốc độ xử lý không ạ? Em cảm ơn bác snow25 nhiều!
 
Upvote 0
Về code chạy đúng nhưng cho lên 600 hàng và 16 ký tự chạy chậm và đợi rất lâu. Các bác các thầy xem có cách nào cải thiện tốc độ xử lý không ạ? Em cảm ơn bác snow25 nhiều!
Mã:
Public Sub RoiTung()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong)
For I = 1 To UBound(Vung, 2)
    For J = 1 To UBound(Vung, 1)
             A(J) = A(J) & Vung(J, I)
    Next J
Next I
iHang = Application.WorksheetFunction.Combin(Len(A(1)), 2)
ReDim Mg(1 To iHang * 2, 1 To idong)
For m = 1 To UBound(A, 1)
For I = 1 To Len(A(m)) - 1
    For J = I + 1 To Len(A(m))
        K = K + 1
        Mg(K, m) = Mid(A(m), I, 1) & Mid(A(m), J, 1): Mg(K + iHang, m) = Mid(A(m), J, 1) & Mid(A(m), I, 1)
    Next J
Next I
K = 0
Next m
Sheet1.Range("p1").Resize(UBound(Mg, 1), idong).Value = Mg
End Sub
bạn dùng code này nhé nhưng mà bắt buộc là số ký tự phải đều nhau.
 
Upvote 0
Mã:
Public Sub RoiTung()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong)
For I = 1 To UBound(Vung, 2)
    For J = 1 To UBound(Vung, 1)
             A(J) = A(J) & Vung(J, I)
    Next J
Next I
iHang = Application.WorksheetFunction.Combin(Len(A(1)), 2)
ReDim Mg(1 To iHang * 2, 1 To idong)
For m = 1 To UBound(A, 1)
For I = 1 To Len(A(m)) - 1
    For J = I + 1 To Len(A(m))
        K = K + 1
        Mg(K, m) = Mid(A(m), I, 1) & Mid(A(m), J, 1): Mg(K + iHang, m) = Mid(A(m), J, 1) & Mid(A(m), I, 1)
    Next J
Next I
K = 0
Next m
Sheet1.Range("p1").Resize(UBound(Mg, 1), idong).Value = Mg
End Sub
bạn dùng code này nhé nhưng mà bắt buộc là số ký tự phải đều nhau.
về cơ bản đã ok. Nhưng chạy tối đa đc 220 dòng báo lỗi 09 bác à.
Bài đã được tự động gộp:

Vâng em xin rút kinh nghiệm chưa trích dẫn nguồn. Cảm ơn BQT ạ!
 
Upvote 0
về cơ bản đã ok. Nhưng chạy tối đa đc 220 dòng báo lỗi 09 bác à.
Bài đã được tự động gộp:


Vâng em xin rút kinh nghiệm chưa trích dẫn nguồn. Cảm ơn BQT ạ!
không phải là tối đa 220 dòng bạn nhé.chắc là do lỗi khai báo ở cho redim để mình xem lai.
 
Upvote 0
về cơ bản đã ok. Nhưng chạy tối đa đc 220 dòng báo lỗi 09 bác à.
Bài đã được tự động gộp:


Vâng em xin rút kinh nghiệm chưa trích dẫn nguồn. Cảm ơn BQT ạ!
đây bạn xem nhé
Mã:
Public Sub RoiTung1()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m, max As Long
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong)
For I = 1 To UBound(Vung, 1)
    For J = 1 To UBound(Vung, 2)
             A(I) = A(I) & Vung(I, J)
    Next J
    If max < Len(A(I)) Then max = Len(A(I))
Next I
iHang = Application.WorksheetFunction.Combin(max, 2)
ReDim Mg(1 To iHang * 2, 1 To idong)
For m = 1 To UBound(A, 1)
iHang = Application.WorksheetFunction.Combin(Len(A(m)), 2)
For I = 1 To Len(A(m)) - 1
    For J = I + 1 To Len(A(m))
        K = K + 1
        Mg(K, m) = Mid(A(m), I, 1) & Mid(A(m), J, 1): Mg(K + iHang, m) = Mid(A(m), J, 1) & Mid(A(m), I, 1)
    Next J
Next I
K = 0
Next m
Sheet1.Range("p1").Resize(UBound(Mg, 1), idong).Value = Mg
End Sub
 
Upvote 0
đây bạn xem nhé
Mã:
Public Sub RoiTung1()
Dim Vung, A(), B, I, J, K, Mg, iHang, iCot, idong, m, max As Long
iCot = Range([A1], [A1].End(xlToRight)).Columns.Count
idong = Range("a" & Rows.Count).End(xlUp).Row
Vung = [A1].Resize(idong, iCot)
ReDim A(1 To idong)
For I = 1 To UBound(Vung, 1)
    For J = 1 To UBound(Vung, 2)
             A(I) = A(I) & Vung(I, J)
    Next J
    If max < Len(A(I)) Then max = Len(A(I))
Next I
iHang = Application.WorksheetFunction.Combin(max, 2)
ReDim Mg(1 To iHang * 2, 1 To idong)
For m = 1 To UBound(A, 1)
iHang = Application.WorksheetFunction.Combin(Len(A(m)), 2)
For I = 1 To Len(A(m)) - 1
    For J = I + 1 To Len(A(m))
        K = K + 1
        Mg(K, m) = Mid(A(m), I, 1) & Mid(A(m), J, 1): Mg(K + iHang, m) = Mid(A(m), J, 1) & Mid(A(m), I, 1)
    Next J
Next I
K = 0
Next m
Sheet1.Range("p1").Resize(UBound(Mg, 1), idong).Value = Mg
End Sub
Cảm ơn bác nhiều chạy đã ok.
 
Upvote 0
Web KT

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

Back
Top Bottom