Copy các cell cách đều nhau (1 người xem)

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

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

meacupa

Thành viên chính thức
Tham gia
2/12/11
Bài viết
77
Được thích
3
Chào cả nhà.
Mình lại có vấn đề cần mọi người giúp đỡ:
Mình cần copy giá trị của các cell cách đều nhau trong 1 cột ra cột khác.
VD giống như file mình gửi.
Thank cả nhà.
 

File đính kèm

Chào cả nhà.
Mình lại có vấn đề cần mọi người giúp đỡ:
Mình cần copy giá trị của các cell cách đều nhau trong 1 cột ra cột khác.
VD giống như file mình gửi.
Thank cả nhà.
Nếu làm thủ công thì bạn chèn thêm hàng tiêu đề và thêm 1 cột phụ (cột B chẳng hạn) với công thức =MOD(ROW(),4), trong đó số 4 là khoảng cách giữa các ô gần nhau sẽ copy. Sau đó lọc dữ liệu theo cột này, bạn thích lấy số mấy trong cột thì tùy ý. Cuối cùng copy kết quả lọc sang vị trí mới rồi xóa các đối tượng phụ đi.

Nếu bạn không muốn copy thủ công thì sử dụng VBA, chỉ cần 1 vòng For là xong.
 
1. Tại ô B1 đặt công thức =IF(MOD(ROW();4)=1;1;""). Fill xuống đến hết
2. Auto Fillter theo giá trị 1 hoặc NoneBlank
3. Chọn vùng tại cột A và copy
4. Paste sang sheet khác.
 
1. Tại ô B1 đặt công thức =IF(MOD(ROW();4)=1;1;""). Fill xuống đến hết
2. Auto Fillter theo giá trị 1 hoặc NoneBlank
3. Chọn vùng tại cột A và copy
4. Paste sang sheet khác.
Bạn ơi công thức này phải là =IF(MOD(ROW(),4)=1,1,"") chứ.

Nếu làm thủ công thì bạn chèn thêm hàng tiêu đề và thêm 1 cột phụ (cột B chẳng hạn) với công thức =MOD(ROW(),4), trong đó số 4 là khoảng cách giữa các ô gần nhau sẽ copy. Sau đó lọc dữ liệu theo cột này, bạn thích lấy số mấy trong cột thì tùy ý. Cuối cùng copy kết quả lọc sang vị trí mới rồi xóa các đối tượng phụ đi.

Nếu bạn không muốn copy thủ công thì sử dụng VBA, chỉ cần 1 vòng For là xong.
Bạn có thể giúp mình bằng VBA được không.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn ơi công thức này phải là =IF(MOD(ROW(),4)=1,1,"") chứ.

Bạn có thể giúp mình bằng VBA được không.
Thứ nhất, dấu , hay ; là do trong máy của bạn quy định (trong Control Panel và trong tùy chọn của Excel).
Thứ hai, nếu muốn sử dụng VBA thì bạn có thể sử dụng code như sau:
[GPECODE=vb]Sub CopyCachDeu()
Dim i As Long
With Sheets("Sheet3")
.[C:C].Clear
For i = 1 To .[A65536].End(xlUp).Row Step 4
.[C65536].End(xlUp).Offset(1) = .Cells(i, 1)
Next
End With
End Sub[/GPECODE]
 
Mình có 1 cách làm khá gọn, thử xem sao:

Giả sử ô đầu tiên của cột Danh sách là A2, vậy thì tại vùng cần lấy dữ liệu lọc tại ô đầu ta gõ công thức sau rồi filldown cho đủ :

=OFFSET($A$2,ROW(1:1)*4-1,0)

Công thức này không ràng buộc ta về dòng đầu tiên của danh sách và dòng đầu tiên của vùng kết quả, chỉ cần cấp địa chỉ ô đầu danh sách là xong.Không cần đến cột phụ.
Vậy là ta có danh sách như ý , công thức nhẹ, liên kết có thể cập nhật được thay đổi. Muốn danh sách cố định thì dùng Copy-Paste Speacial là xong
 
Lần chỉnh sửa cuối:
Thứ nhất, dấu , hay ; là do trong máy của bạn quy định (trong Control Panel và trong tùy chọn của Excel).
Thứ hai, nếu muốn sử dụng VBA thì bạn có thể sử dụng code như sau:
[GPECODE=vb]Sub CopyCachDeu()
Dim i As Long
With Sheets("Sheet3")
.[C:C].Clear
For i = 1 To .[A65536].End(xlUp).Row Step 4
.[C65536].End(xlUp).Offset(1) = .Cells(i, 1)
Next
End With
End Sub[/GPECODE]

Bạn ơi sao mình sử dụng code này nó báo là Subscript out of range.
Mình đã hiểu rồi, thanks bạn nhé
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom