Copy dữ liệu vào các dòng trống

Liên hệ QC

Vodanh

Thành viên mới
Tham gia
12/3/07
Bài viết
6
Được thích
0
Hi all,

Mình đang có khó khăn trong việc copy bằng tay các dòng trống trong cùng 1 cột xác định. Vì khi filter thì sẽ không thấy thông tin của các dòng này.

Theo files excel mẫu đính kèm theo, mình phải copy bằng tay cột C, dòng 4 "A" xuống các dòng trống trong cột C là dòng 5 và dòng 6. Tiếp tục mình copy cột C, dòng 7 "B" xuống dòng 8 và 9. cứ tiếp tục như thế.

Mục đích: do khi mình filter cột F "Thành tiền" với giá trị filter= 400 thì nó sẽ tìm thấy dòng 8 thỏa điều kiện nhưng bị thiếu thông tin hiển thị của cột C. Vì vậy, mình phải copy trước khi filter.

Đây là 1 files mà được kết xuất thông tin từ 1 hệ thống database khác nên định dạng nó như thế.

Mình muốn nhờ các bạn giúp viết 1 hàm Macro để làm động tác copy tự động thông tin từ dòng trên xuống dòng dưới và ngưng lại khi dòng thứ n có thông tin.

Trong ví dụ này cột C là minh họa, mình có thể quyét khối cột cần copy trước khi thực hiện copy.

Mong mọi người giúp mình vụ này nhé. Yêu cầu này rất quan trọng với mình.

Xin chân thành cám ơn!
 

File đính kèm

  • copy dong.xls
    17 KB · Đọc: 274
Lần chỉnh sửa cuối:
Thích thì chiều

Hi all,

Mình đang có khó khăn trong việc copy bằng tay các dòng trống trong cùng 1 cột xác định. Vì khi filter thì sẽ không thấy thông tin của các dòng này.

Theo files excel mẫu đính kèm theo, mình phải copy bằng tay cột C, dòng 4 "A" xuống các dòng trống trong cột C là dòng 5 và dòng 6. Tiếp tục mình copy cột C, dòng 7 "B" xuống dòng 8 và 9. cứ tiếp tục như thế.

Mục đích: do khi mình filter cột F "Thành tiền" với giá trị filter= 400 thì nó sẽ tìm thấy dòng 8 thỏa điều kiện nhưng bị thiếu thông tin hiển thị của cột C. Vì vậy, mình phải copy trước khi filter.

Đây là 1 files mà được kết xuất thông tin từ 1 hệ thống database khác nên định dạng nó như thế.

Mình muốn nhờ các bạn giúp viết 1 hàm Macro để làm động tác copy tự động thông tin từ dòng trên xuống dòng dưới và ngưng lại khi dòng thứ n có thông tin.

Trong ví dụ này cột C là minh họa, mình có thể quyét khối cột cần copy trước khi thực hiện copy.

Mong mọi người giúp mình vụ này nhé. Yêu cầu này rất quan trọng với mình.

Xin chân thành cám ơn!


Bạn xài cái này thử xem nhé
PHP:
Sub SaoChep()
    n = Range("F65000").End(xlUp).Row
    For i = 4 To n
        If Range("C" & i) = "" Then Range("C" & i) = Range("C" & i - 1)
    Next
End Sub

Chúc vui
Thân
 
Làm bằng tay cũng được mà:
- Bôi đen cột C, từ C4 đến cuối
- Bấm Ctrl + G, chọn Special và chọn mục Blanks rồi bấm OK
- Gõ vào thanh Formula công thức =C4 rồi bấm tổ hợp phím Ctrl + Enter
(Ctrl + Enter chứ không phải Ctrl + Shift + Enter đâu nha)
Vậy là xong tất
 
Nếu bạn vẫn cần 1 macrro, thì cái này nhanh hơn tẹo đó!

PHP:
Option Explicit
Sub EnterValue()
 Dim Rng As Range, sRng As Range
 Set Rng = Range([C3], Cells([f65500].End(xlUp).Row, "C"))
 Do
   Set sRng = Rng.Find("", , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      Exit Do
   Else
      sRng.Value = sRng.Offset(-1).Value
   End If
 Loop
End Sub
 
PHP:
Option Explicit
Sub EnterValue()
 Dim Rng As Range, sRng As Range
 Set Rng = Range([C3], Cells([f65500].End(xlUp).Row, "C"))
 Do
   Set sRng = Rng.Find("", , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      Exit Do
   Else
      sRng.Value = sRng.Offset(-1).Value
   End If
 Loop
End Sub
Chạy đua tốc độ với sư phụ
PHP:
Sub Test()
  On Error Resume Next
  With Range([C3], Cells([f65500].End(xlUp).Row, "C")).SpecialCells(4)
    For i = 1 To .Areas.Count
      .Areas(i).Value = .Areas(i)(0).Value
    Next
  End With
End Sub
Ẹc... Ẹc...
 
Chạy đua tốc độ với sư phụ
PHP:
Sub Test()
  On Error Resume Next
  With Range([C3], Cells([f65500].End(xlUp).Row, "C")).SpecialCells(4)
    For i = 1 To .Areas.Count
      .Areas(i).Value = .Areas(i)(0).Value
    Next
  End With
End Sub
Ẹc... Ẹc...

Thanks bạn đã hướng dẫn nhiệt tình, câu lệnh của bạn chạy ngon lắm. Nhờ bạn giúp cho chót mình phần này luôn nhé:
1. Thay vì viết cứng là With Range([C3], Cells([f65500].End(xlUp).Row, "C")).SpecialCells(4) thì có cách nào viết động hơn bằng cách trước khi chạy câu lệnh mình sẽ quyét khối toàn bộ vùng cột cần copy và nó cứ thế mà chạy theo cột đã quyét đó.
2. Do mình chưa bao giờ làm hàm macro này nên không biết cách tạo 1 files = macro rồi sang máy khác add-Ins vào để sử dụng. Mong anh em hướng dẫn mình các bước tạo files này luôn nhé.

Thanks all //**/
 
Lần chỉnh sửa cuối:
Chạy đua tốc độ với Ẹc... Ẹc...
Nếu chỉ mỗi dòng trống thì không nên đua;
Nhiều dòng trống thì mình chịu thua! :-= --=0 :-= --=0 Khì, . . khì. . .

(To VoDanh)
1. Thay vì viết cứng là With Range([C3], Cells([f65500].End(xlUp).Row, "C")).SpecialCells(4) thì có cách nào viết động hơn bằng cách trước khi chạy câu lệnh mình sẽ quyét khối toàn bộ vùng cột cần copy và nó cứ thế mà chạy theo cột đã quyét đó.
Bạn quét chọn trước vùng cần xử lý;
& Thay dòng lệnh bạn nêu thành

Mã:
With Selection.SpecialCells(4)
 
Hi all, Mình đã tạo thành files add-ins để sử dụng cho các máy khác. Nhưng khi vào Formulars, phần user defined mình không thấy files add-ins của mình đâu để sử dụng. Ai giúp mình add phần này để chạy cho các máy khác nhé. Thanks!
 
Làm bằng tay cũng được mà:
- Bôi đen cột C, từ C4 đến cuối
- Bấm Ctrl + G, chọn Special và chọn mục Blanks rồi bấm OK
- Gõ vào thanh Formula công thức =C4 rồi bấm tổ hợp phím Ctrl + Enter
(Ctrl + Enter chứ không phải Ctrl + Shift + Enter đâu nha)
Vậy là xong tất
cảm ơn bạn nhiều nha
 
Chạy đua tốc độ với sư phụ
PHP:
Sub Test()
  On Error Resume Next
  With Range([C3], Cells([f65500].End(xlUp).Row, "C")).SpecialCells(4)
    For i = 1 To .Areas.Count
      .Areas(i).Value = .Areas(i)(0).Value
    Next
  End With
End Sub
Ẹc... Ẹc...
hi anh, Nếu muốn copy từ A3 đến F thì mình sửa câu lệnh như thế nào cho phù hợp vậy ạ!
 
Web KT
Back
Top Bottom