nhat chi mai
Thành viên gắn bó



- Tham gia
- 22/11/11
- Bài viết
- 1,832
- Được thích
- 9
Nếu làm thủ công thì bạn làm như sau:Em xin nhờ Anh(Chị) giúp đỡ cho em về việc chèn thêm hàng trống nhưng không phải insert từng hàng một.
Yêu cầu cụ thể em gửi theo file sau:
Nếu làm thủ công thì bạn làm như sau:
- Dùng 1 cột phụ, đánh số thứ tự cho vùng dữ liệu (Ví dụ với dữ liệu của bạn tôi dùng cột F)
- Copy cột Số thứ tự paste xuống vùng ngay bên dưới nó (Copy F2:F7 paste vào F8
- Chọn vùng A2:F13 và sort tăng dần theo cột phụ (cột F)
- Xóa cột phụ
Cách này là cách nhanh, ngay cả với cơ sử dữ liệu lớn vẫn dùng được. Dùng Macro với thuật toán khác chưa chắc nhanh bằng cách này. Tuy nhiên trong một số trường hợp dữ liệu có công thức thì cách này có thể làm cho công thức bị đổi tham chiếu ngoài ý muốn.Vâng ạ, em cảm ơn, nhưng trường hợp với một cơ sở dữ liệu lớn , các dữ liệu bao gồm cả công thức, bảng tính nếu dùng cách này không ổn lắm ạ.
Cách này là cách nhanh, ngay cả với cơ sử dữ liệu lớn vẫn dùng được. Dùng Macro với thuật toán khác chưa chắc nhanh bằng cách này. Tuy nhiên trong một số trường hợp dữ liệu có công thức thì cách này có thể làm cho công thức bị đổi tham chiếu ngoài ý muốn.
Còn một cách làm thủ công khác không làm ảnh hưởng đến các công thức nhưng chỉ áp dụng tốt đối với vùng dữ liệu nhỏ. Vậy nên tôi viết cho bạn một Macro vậy.
[gpecode=vb]Sub ChenDong()
Dim i As Long
Application.ScreenUpdating = False
For i = Selection.Rows.Count To 1 Step -1
Selection(i, 1).EntireRow.Insert Shift:=xlDown
Next
Application.ScreenUpdating = True
End Sub[/gpecode]
Cách sử dụng: Chọn vùng muốn chèn dòng (1 vùng liên tục nhé) và chạy Macro
Thử code này xem có được không. Nếu dữ liệu nhiều dùng mảng có thể nhanh hơn chútEm xin nhờ Anh(Chị) giúp đỡ cho em về việc chèn thêm hàng trống nhưng không phải insert từng hàng một.
Yêu cầu cụ thể em gửi theo file sau:
Sub chendong()
Dim data(), Result(), i, j, x
data = Range([A2], [A65536].End(3)).Resize(, 5).FormulaR1C1
ReDim Result(1 To UBound(data) * 2, 1 To 5)
For i = 1 To UBound(data)
For j = 1 To 5
Result(x + 1, j) = data(i, j)
Next
x = x + 2
Next
[A2].Resize(x, 5) = Result
End Sub
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>cách dùng mẹo,
bạn insert thêm cột A, rồi autofill cho cột này (theo bài của bạn là từ 1-6.
sau đó bạn copy từ 1-6 chép nối đuôi vào trong cột A.
chọn toàn bộ vùng số liệu này (gồm 12 hàng, 6 hàng có data và 6 hàng rổng)
chọn sort, chọn column A.
vậy là bạn được mỗi dòng rổng nằm ở giữa.
nhà quê ko biết chơi code thì choi cái này ....hihihi
Nếu làm thủ công thì bạn làm như sau:
- Dùng 1 cột phụ, đánh số thứ tự cho vùng dữ liệu (Ví dụ với dữ liệu của bạn tôi dùng cột F)
- Copy cột Số thứ tự paste xuống vùng ngay bên dưới nó (Copy F2:F7 paste vào F8
- Chọn vùng A2:F13 và sort tăng dần theo cột phụ (cột F)
- Xóa cột phụ
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Nguyên văn bởi nhapmon cách dùng mẹo,
bạn insert thêm cột A, rồi autofill cho cột này (theo bài của bạn là từ 1-6.
sau đó bạn copy từ 1-6 chép nối đuôi vào trong cột A. '*'
chọn toàn bộ vùng số liệu này (gồm 12 hàng, 6 hàng có data và 6 hàng rổng)
chọn sort, chọn column A.
vậy là bạn được mỗi dòng rổng nằm ở giữa.
nhà quê ko biết chơi code thì choi cái này ....hihihi
Thì bạn cứ làm theo [Nhap Môn] chỉ dẫn đi; Nhưng thay vì chép 1 lần số thứ tự, bạn chép làm 2 lần! (Dòng có đánh dấu đó)
Thưa anh, em có cho chạy thử đoạn code anh viết nhưng gặp phải một vấn đề là cái dòng đầu tiên của mình tự nhiên lại có 1 dòng trống nằm phía trên nó , vậy anh có cách nào khắc phục ko ạ. (em để trong sheet 2 và 3)Cách này là cách nhanh, ngay cả với cơ sử dữ liệu lớn vẫn dùng được. Dùng Macro với thuật toán khác chưa chắc nhanh bằng cách này. Tuy nhiên trong một số trường hợp dữ liệu có công thức thì cách này có thể làm cho công thức bị đổi tham chiếu ngoài ý muốn.
Còn một cách làm thủ công khác không làm ảnh hưởng đến các công thức nhưng chỉ áp dụng tốt đối với vùng dữ liệu nhỏ. Vậy nên tôi viết cho bạn một Macro vậy.
[gpecode=vb]Sub ChenDong()
Dim i As Long
Application.ScreenUpdating = False
For i = Selection.Rows.Count To 1 Step -1
Selection(i, 1).EntireRow.Insert Shift:=xlDown
Next
Application.ScreenUpdating = True
End Sub[/gpecode]
Cách sử dụng: Chọn vùng muốn chèn dòng (1 vùng liên tục nhé) và chạy Macro
Thưa anh, em có cho chạy thử đoạn code anh viết nhưng gặp phải một vấn đề là cái dòng đầu tiên của mình tự nhiên lại có 1 dòng trống nằm phía trên nó , vậy anh có cách nào khắc phục ko ạ. (em để trong sheet 2 và 3)
[B]For i = Selection.Rows.Count To 2 Step -1[/B]