Cách chèn thêm hàng trống (2 người xem)

Liên hệ QC

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

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
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:
 

File đính kèm

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ụ
 
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ụ

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 ạ.
 
Vì file mẫu của bạn không có công thức nào, nên được hướng dẫn vậy thôi;

Còn nếu dữ liệu nhiều thì nhờ đến bộ thu macro giup sức:

Xuống hàgn cuối chứa dữ liệu của trang tính, tìm cách thêm 1 dòng,
Lên trên 1 dòng & thêm 1 dong nữa (Cho đến khi nhuần nhuyễn thì mở bộ thu macro lên & thực hiện ghi lại.
Sau đó bạn viết thêm vài câu lệnh tạo vòng lặp thực hiện từ cuối lên đâu dữ liệu;
Chúc thành công.
 
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
 
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

em sẽ thử chạy xem ạ! nhưng em không biết gì về vba đâu, chạy thì cứ cho chạy thôi+-+-+-+
 
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:
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út
PHP:
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
 
ah, có rồi hả...sorry...đọc ko kỹ. nhờ xóa giúp...tks
 
Lần chỉnh sửa cuối:
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 đó)
 
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)
 

File đính kèm

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)

Thì bạn thử sửa câu lệnh lại là vầy xem sao:

Mã:
 [B]For i = Selection.Rows.Count To 2 Step -1[/B]
 
Web KT

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

Back
Top Bottom