tách dòng theo thứ tự

Liên hệ QC

tampt@stonevietnam

Thành viên mới
Tham gia
15/4/15
Bài viết
49
Được thích
2
Kính gửi các anh chị.

Em đang muốn nhờ các anh chị giúp đỡ em chút để xử lý file ex tách 1 dòng thành nhiều dòng theo thứ tự

Em cũng đã có FIle VBA tách dòng rồi, nhưng File này đang thực hiện tách như sau:

Dòng số 3 có tổng số là 20 thì VBA thực hiện tách thành 20 dòng số 3 trước sau đó mới thực hiện tách 20 dòng số 4

Em muốn thực hiện tách : Tách dòng số 3 thành 1 dòng sau đó tách đến dòng số 4. cứ thứ tự như vậy từ 1 đến 20 dòng 3 và 4 xen kẻ nhau.

Anh chị giúp em với ạ. Em chân thành cám ơn

File đính kèm em gửi phía dưới ạ
 

File đính kèm

Em muốn thực hiện tách : Tách dòng số 3 thành 1 dòng sau đó tách đến dòng số 4. cứ thứ tự như vậy từ 1 đến 20 dòng 3 và 4 xen kẻ nhau.
Tạo thêm 1 sheet mong muốn, ghi rõ: Tôi muốn kết quả như vầy,như vầy ... thì người trợ giúp sẽ dễ dàng hơn.
 
Kính gửi các anh chị.

Em đang muốn nhờ các anh chị giúp đỡ em chút để xử lý file ex tách 1 dòng thành nhiều dòng theo thứ tự

Em cũng đã có FIle VBA tách dòng rồi, nhưng File này đang thực hiện tách như sau:

Dòng số 3 có tổng số là 20 thì VBA thực hiện tách thành 20 dòng số 3 trước sau đó mới thực hiện tách 20 dòng số 4

Em muốn thực hiện tách : Tách dòng số 3 thành 1 dòng sau đó tách đến dòng số 4. cứ thứ tự như vậy từ 1 đến 20 dòng 3 và 4 xen kẻ nhau.

Anh chị giúp em với ạ. Em chân thành cám ơn

File đính kèm em gửi phía dưới ạ
Không biết con số 20 ở đâu ra?
Thử chạy Sub này:
PHP:
Public Sub sGpe()
Const X As Long = 20             '<--------Con số MA'
Dim sArr(), dArr(), I As Long, J As Long, K As Long, N As Long, R As Long
sArr = Range("A3", Range("A50000").End(xlUp)).Resize(, 11).Value
R = UBound(sArr)
ReDim dArr(1 To R * X, 1 To 11)
For N = 1 To X
    For I = 1 To R
        K = K + 1
        For J = 1 To 11
            dArr(K, J) = sArr(I, J)
        Next J
    Next I
Next N
Range("A3").Resize(K, 11) = dArr
End Sub
 
Kính gửi các anh chị.
Em đang muốn nhờ các anh chị giúp đỡ em chút để xử lý file ex tách 1 dòng thành nhiều dòng theo thứ tự
Em cũng đã có FIle VBA tách dòng rồi, nhưng File này đang thực hiện tách như sau:
Dòng số 3 có tổng số là 20 thì VBA thực hiện tách thành 20 dòng số 3 trước sau đó mới thực hiện tách 20 dòng số 4
Em muốn thực hiện tách : Tách dòng số 3 thành 1 dòng sau đó tách đến dòng số 4. cứ thứ tự như vậy từ 1 đến 20 dòng 3 và 4 xen kẻ nhau.
Anh chị giúp em với ạ. Em chân thành cám ơn
File đính kèm em gửi phía dưới ạ
Ý bạn muốn thế này phải không? Cứ mỗi dòng là insert bên dưới nó một dòng trống.
Cách đơn giản nhất là làm thế này: Copy số thứ tự rồi Paste xuống dưới cùng rồi Sort cột thứ tự.
Nếu muốn code thì tính sau.
 
Dạ em chào các anh chị ạ
Em cám ơn những đóng góp chân thành của anh chị.
Số 20 là em nhầm. Trong bảng này CỘT G (QTY) là số lượng em muốn tách . số lượng ở đây là 10 . em muốn tách thành 1 dòng lần lượt theo thứ tự dòng 3 số lượng là 1 sau đó dòng 4 số lượng là 1 và cư như vậy cho đến dòng số 10.

Em gửi lại file đầu bài và file kết quả em muốn tra ve.
 

File đính kèm

Dạ em chào các anh chị ạ
Em cám ơn những đóng góp chân thành của anh chị.
Số 20 là em nhầm. Trong bảng này CỘT G (QTY) là số lượng em muốn tách . số lượng ở đây là 10 . em muốn tách thành 1 dòng lần lượt theo thứ tự dòng 3 số lượng là 1 sau đó dòng 4 số lượng là 1 và cư như vậy cho đến dòng số 10.

Em gửi lại file đầu bài và file kết quả em muốn tra ve.
Bạn tham khảo thử Code này xem
PHP:
Sub Tachdulieu()
    Dim Res, Result, I As Long, Idx As Long, J As Long, K As Long, C As Long: C = 7
    Dim Rng As Range, Nmax As Long, N As Long, Er As Long
With Sheets("DE BAI")
    Set Rng = .Range(.Cells(3, C), .Cells(Rows.Count, C).End(xlUp))
    Nmax = Application.Max(Rng)
    Res = .Range("A3", .Range("A" & Rows.Count).End(xlUp)).Resize(, 11).Value
End With
ReDim Result(1 To UBound(Res, 1) * Nmax, 1 To UBound(Res, 2))
For Idx = 1 To Nmax
    For I = 1 To UBound(Res, 1)
        N = Res(I, C)
        If IsNumeric(N) And N > 0 Then
            If Idx <= N Then
                K = K + 1
                Result(K, 1) = K
                For J = 2 To C - 1
                    Result(K, J) = Res(I, J)
                Next J
                Result(K, C) = 1
                For J = C + 1 To UBound(Res, 2)
                    Result(K, J) = Res(I, J)
                Next J
            End If
        End If
    Next I
Next Idx
With Sheets("KET QUA TRA VE ")
    Er = .Range("A" & Rows.Count).End(xlUp).Row
    If K Then
        With .Range("A3:A" & Er).Resize(, UBound(Res, 2))
            If Er > 2 Then
                .ClearContents: .Borders.LineStyle = xlNone
            End If
        End With
        With .Range("A3").Resize(K, UBound(Res, 2))
            .Value = Result:  .Borders.LineStyle = xlContinuous
        End With
    End If
End With
End Sub
 
Lần chỉnh sửa cuối:
Dạ em cám ơn anh
Ba Rọi 33 và các anh chị ạ

Em coppy dòng lệch VBA của anh vào file nhưng khi chạy thì báo lỗi.

Anh xem giúp em với ạ. có thể hỗ trợ thêm cho em dòng lệch vào File em gửi đc ko ạ? em cám ơn anh rất nhiều ạ

1538798287726.png
 
@ tampt@stonevietnam

Trường hợp 4 mã A,B,C,D có số lượng lần lượt là 5,21,13,35 thì kết quả mong muốn như thế nào?
 
Em cám ơn các anh chi. Đăc biệt là bạn @Ba Rọi 33 . Mình đã làm được rồi nhé

Mình gửi lại file anh chị nào cần thì lấy tham khảo nhé.


Yêu cả nhà., chúc cả nhà cuối tuần vv nhé
 

File đính kèm

@Ba Rọi 33 Cho minh hỏi chút nữa

Dòng lệch bạn viết các cột đứng sau cột K (Như cột L, M....) không thay đổi khi mình chạy lệnh. trang hiển thị kết quả không báo kết quả cột (L, M...)
Cậu cho mình hỏi làm thế nào để sheet trả kết quả ở các cột trên hiện giúp mình với


Mình gửi File đính kèm để cậu hiểu rõ hơn

Thanks cậu
 

File đính kèm

@Ba Rọi 33 Cho minh hỏi chút nữa

Dòng lệch bạn viết các cột đứng sau cột K (Như cột L, M....) không thay đổi khi mình chạy lệnh. trang hiển thị kết quả không báo kết quả cột (L, M...)
Cậu cho mình hỏi làm thế nào để sheet trả kết quả ở các cột trên hiện giúp mình với


Mình gửi File đính kèm để cậu hiểu rõ hơn

Cảm ơn cậu
Với dữ liệu file mới
Mã:
 Res = .Range("A3", .Range("A" & Rows.Count).End(xlUp)).Resize(, 14).Value
Cái mảng Res lấy dữ liệu từ A3 đến dòng cuối có dữ liệu của cột A và lấy sang trái 14 cột và cột "QTY" (C=11) trong mange Res (Đếm từ cột A sang trái)
 

File đính kèm

Wòa. cám ơn bạn @Ba Rọi 33 nhiều lắm í.và các bạn khác nữa mình làm được rồi.
Bạn thật tuyệt vời. chúc bạn cuối tuần vui vẽ nhé. HP sẽ đến với bạn
 
Web KT

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

Back
Top Bottom