Chuyển dữ liệu 1 dòng thành nhiều dòng theo điều kiện số lượng cho trước

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Hoàng Hoa1988

Thành viên mới
Tham gia
11/8/17
Bài viết
7
Được thích
0
Giới tính
Nữ
Em chào các Anh /Chị trong diễn đàn ạ!
Các Anh Chị làm ơn giúp em, em muốn chuyển dữ liệu từ 1 dòng thành nhiều dòng theo điều kiện số lượng cho trước.
Em cảm ơn các Anh Chị đã đọc bài và duyệt bài ạ!
 

File đính kèm

  • chuyển dữ liệu từ 1 hàng thành nhiều hàng theo đk.xlsx
    9.8 KB · Đọc: 28
Em chào các Anh /Chị trong diễn đàn ạ!
Các Anh Chị làm ơn giúp em, em muốn chuyển dữ liệu từ 1 dòng thành nhiều dòng theo điều kiện số lượng cho trước.
Em cảm ơn các Anh Chị đã đọc bài và duyệt bài ạ!
Dạng bài này có nhiều trên diễn đàn rồi, bạn chịu khó tìm thôi. (Chớ vội nói là tìm không thấy nhé).
 
Em chào các Anh /Chị trong diễn đàn ạ!
Các Anh Chị làm ơn giúp em, em muốn chuyển dữ liệu từ 1 dòng thành nhiều dòng theo điều kiện số lượng cho trước.
Em cảm ơn các Anh Chị đã đọc bài và duyệt bài ạ!
Bạn chạy code dưới và kiểm tra lại kết quả xem nhé!
PHP:
Sub GPE()
    Dim Arr(), Res(1 To 10000, 1 To 2)
    Dim a&, i&, k&, r&
    On Error Resume Next
    With Sheets("Sheet1")
        .Range("G2:H10000").ClearContents
        Arr = .Range("A2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Value
        For i = 1 To UBound(Arr)
            a = Arr(i, 2)
            r = .Range("G" & Rows.Count).End(xlUp).Row + 1
            If a > 0 Then
                For k = 1 To a
                    Res(k, 1) = Arr(i, 1)
                    Res(k, 2) = k
                Next k
            End If
            .Range("G" & r).Resize(a, 2).Value = Res
        Next i
    End With
    MsgBox "Done"
End Sub
 
Bạn chạy code dưới và kiểm tra lại kết quả xem nhé!
PHP:
Sub GPE()
    Dim Arr(), Res(1 To 10000, 1 To 2)
    Dim a&, i&, k&, r&
    On Error Resume Next
    With Sheets("Sheet1")
        .Range("G2:H10000").ClearContents
        Arr = .Range("A2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Value
        For i = 1 To UBound(Arr)
            a = Arr(i, 2)
            r = .Range("G" & Rows.Count).End(xlUp).Row + 1
            If a > 0 Then
                For k = 1 To a
                    Res(k, 1) = Arr(i, 1)
                    Res(k, 2) = k
                Next k
            End If
            .Range("G" & r).Resize(a, 2).Value = Res
        Next i
    End With
    MsgBox "Done"
End Sub
Cái này dùng công thức cũng được mà.
 
Cái này dùng công thức cũng được mà.
Công thức thì đào mộ hơi kinh đấy.
Bài đã được tự động gộp:

Em chào các Anh /Chị trong diễn đàn ạ!
Các Anh Chị làm ơn giúp em, em muốn chuyển dữ liệu từ 1 dòng thành nhiều dòng theo điều kiện số lượng cho trước.
Em cảm ơn các Anh Chị đã đọc bài và duyệt bài ạ!
Cao thủ đào mộ:
Mã=IF(D1=$A$1;A2;INDEX($A$1:$B$3;IF(COUNTIF($D$1:D1;D1)=VLOOKUP(D1;$A$1:$B$3;2;FALSE);MATCH(D1;$A$1:$A$3;0)+1;MATCH(D1;$A$1:$A$3;0));1))
SL=COUNTIF($D$1:D2;D2)
 

File đính kèm

  • chuyển dữ liệu từ 1 hàng thành nhiều hàng theo đk.xlsx
    12.6 KB · Đọc: 18
Cái này dùng công thức cũng được mà.
Người ta ngứa tay viết code, gặp chỗ gãi ngứa phê muốn chết mà bạn lỳ đà cản mũi.

Chú thích: code để cho On Error Resume Next chạy toàn bài là loại code cẩu thả. Lỡ dữ liệu trệch hoặc code đụng chỗ lỗi chìm (khó nhìn thấy hiển nhiên) thì nó lướt qua. Kết quả kiểu ấy có đáng tin cậy không?
 
Cái này dùng công thức cũng được mà.
Máy cty đang đời nhà tống (2007) nên tôi cũng lười tìm tòi
(đến cái hàm Aggregate nó cũng còn chưa có nữa)
:yeah:
Bài đã được tự động gộp:

Người ta ngứa tay viết code, gặp chỗ gãi ngứa phê muốn chết mà bạn lỳ đà cản mũi.

Chú thích: code để cho On Error Resume Next chạy toàn bài là loại code cẩu thả. Lỡ dữ liệu trệch hoặc code đụng chỗ lỗi chìm (khó nhìn thấy hiển nhiên) thì nó lướt qua. Kết quả kiểu ấy có đáng tin cậy không?
Vui lòng sử dụng từ ngữ như một người có hiểu biết!
 
On Error Resume Next chạy toàn bài là loại code cẩu thả. Lỡ dữ liệu trệch hoặc code đụng chỗ lỗi chìm (khó nhìn thấy hiển nhiên) thì nó lướt qua. Kết quả kiểu ấy có đáng tin cậy không?
Em cứ đi tìm dòng On error goto 0 mà không thấy đâu.
 
...
Vui lòng sử dụng từ ngữ như một người có hiểu biết!
"hiểu biết" gì? văn hóa hay kỹ thuật? hay cả hai?
Về cả hai vấn đề này, toio đều có thể moi lời bạn ra để chỉ trích rằng "hãy nhìn lại mình xem". Nhưng tôi nhường chio bạn ra tay trước đấy.
 
Công thức tại D2:
Mã:
=IFERROR(IF(COUNTIF($D$1:$D1,D1)<VLOOKUP(D1,$A$2:$B$3,2,0),D1,INDEX($A$2:$A$3,MATCH(0,INDEX(COUNTIF($D$1:D1,$A$2:$A$3),),0))),$A$2)
E2:
Mã:
=COUNTIF($D$2:D2,D2)
 
1672116746367.png
Có thể bạn hỏi bài không biết về VBA thì khi chuyển sang vị trí khác "sheet khác chẳng hạn" thì lại đi hỏi tiếp.

Những lý di để tránh dùng VBA jhi có thể dùng công thức:

1. Lý do quan trọng nhất: VBA làm cáu gì khi công thức hoặc thủ công có thể làm được. VBA khiến cái file trở thành nguy hiểm đối với hệ thống. Mõi lần tôi nhận mọt file xlsm từ người khác, tôi bắt họ phải bảo đảm tránh nhiệm vi rút trước khi tôi mở ra. Nhưng hình như dân GPE khong biết sợ thì phải.

2. Lý do đáng lẽ quan trọng nhưng ở GPE thì không thành vấn đề: người ta dùng code khi tự viết được, chỉ hỏi một vài điểm bí.

Những lý do chính để dân GPE dùng VBA:

1. Bên viết code ngứa tay. Tuy rằng có những bài code đã có sẵn lâu rồi, thậm chí code ấy do chiinhs mình viết, cũng vẫn thích code lại.

2. Bên nhờ thì quá dễ hiểu, công việc khỏe nhất.
 
Web KT
Back
Top Bottom