(/iết dùm mình hai macro thêm dòng có điều kiện sau đây (1 người xem)

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

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

ChanhTQ@

0901452không62
Tham gia
5/9/08
Bài viết
4,254
Được thích
4,861
Mình có bảng dữ liệu như sau

| A |
1 |GPE.COM.00|
2 |GPE01 2|
3 |GPE02 9|
4 |GPE03 3|
5 |GPE04 8|
6 |GPE05 5|
7 |GPE06 13|
8 |GPE07 259|
9 ||

Bằng 2 cách, các bạn thêm n dòng ngay dưới dòng dữ liệu; Ở đây, n là chỉ số được viết rời fía cuối của dữ liệu

Ví dụ như dòng 8: "GPE07 259" là thêm 259 dòng dưới dòng dữ liệu này

Xin trân trọng cảm ơn!
 
Lần chỉnh sửa cuối:
Em cũng nghe theo ý của anh NDU và đi theo anh BaTê đập 1 phát sướng thật

PHP:
Sub chenthemdong4()
Dim dl, cotcuoi, i, ii, j, a, N
dl = [a1].CurrentRegion
cotcuoi = UBound(dl, 2)
ReDim arrkq(1 To 65536, 1 To cotcuoi)
j = 1
For i = 2 To UBound(dl)
    a = dl(i, 1)
    N = Val(Right(a, Len(a) - InStrRev(a, " "))) + 1
        For ii = 1 To cotcuoi
            arrkq(j, ii) = dl(i, ii)
        Next
    j = j + N
Next
[A2].Resize(j - 1, cotcuoi) = arrkq
End Sub
Với cái CurrentRegion thì khi dữ liệu phía sau (bên phải) vẫn còn dữ liệu tương ứng với các dòng cột A mà không liên tục với cột A sẽ "lộn xộn" hết.
Tôi dùng [IV1].End(xlToLeft) hy vọng không bị, cột nào có tiêu đề ở dòng 1 thì tính tới cột đó.
(Theo bài #9 của tác giả)
 
Lần chỉnh sửa cuối:
Upvote 0
Vì bài viết của mình >600 nên mình chỉ đưa ra í tưởng thôi

Sao code hình như ra gì đó không phải chèn dòng, suy nghĩ mãi vẫn chưa hiểu. Giải thích dùm em đi.
Để thực hiện trọn vẹn còn 2 công đoạn nữa, đó là:

Chọn CSDL & xếp theo cột mới sinh;
Xoá cột đó đi.
 
Upvote 0
Với cái CurrentRegion thì khi dữ liệu phía sau (bên phải) vẫn còn dữ liệu tương ứng với các dòng cột A mà không liên tục với cột A sẽ "lộn xộn" hết.
Tôi dùng [IV1].End(xlToLeft) hy vọng không bị, cột nào có tiêu đề ở dòng 1 thì tính tới cột đó.
(Theo bài #9 của tác giả)

Vậy em sử dụng Usedrange chắc là an toàn

PHP:
Sub chenthemdong5()
Dim dl, cotcuoi, i, ii, j, n
dl = ActiveSheet.UsedRange
cotcuoi = UBound(dl, 2)
ReDim arrkq(1 To 65536, 1 To cotcuoi)
j = 1
For i = 2 To UBound(dl)
    n = Val(Right(dl(i, 1), Len(dl(i, 1)) - InStrRev(dl(i, 1), " "))) + 1
        For ii = 1 To cotcuoi
            arrkq(j, ii) = dl(i, ii)
        Next
    j = j + n
Next
[A2].Resize(j - 1, cotcuoi) = arrkq
End Sub
 
Upvote 0
Sau khi chạy macro trên, ta gọi tiếp macro sau

PHP:
Sub Macro2()
 Dim Rng As Range
 
 Set Rng = [B1].CurrentRegion
 Rng.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
 Columns("A:A").Delete
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom