Copy và Paste theo điều kiện Xen kẻ dòng

Liên hệ QC

raisoldier

Thành viên chính thức
Tham gia
12/2/09
Bài viết
82
Được thích
2
chào anh chị, hôm nay lại ngồi nghĩ ra 1 vấn đề này, mong anh chị giải đáp dùm em
ở file e gửi, trong sheet1 có dãy chữ từ A->F, bây g e quét hết dãy đó, rùi nhấn Ctrl-C (nghĩa là copy đó), bây g mới qua sheet2, k biết làm sao để paste vào sheet2 nó sẽ hiện ra như trong sheet, nghĩa là cứ A, cách 2 ô rùi B, cách 2 ô C..... cứ thế tiếp tục.Ah, vấn đề ở đây là không ngồi link địa chỉ từng cái qua nha, nếu link tay thì k còn là thắc mắc của e nữa
--=0
Mong anh chị chỉ giúp
 

File đính kèm

Lần chỉnh sửa cuối:
Hãy chiêm nghiệm với macro sau

PHP:
Option Explicit
Sub Copy3Row()
 Dim Clls As Range, Rws As Long
 For Each Clls In Sheet1.Range([A1], [A65500].End(xlUp))
   With Sheet2.[A65500].End(xlUp)
      .Offset(Rws).Value = Clls.Value:             Rws = 3
   End With
 Next Clls
End Sub

Chúc thành công.
 
Upvote 0
Anh ơi, cho e hỏi, sao e để 1 loạt giá trị '01.1111, '02.1111, ...... sau khi chạy marco trên nó trở thành 1.1111, 2.1111, ... sao nó không giữ nguyên giá trị khi copy qua vậy anh
 
Upvote 0
Vì nó thông manh & tưởng là số trị, nên mới thế

Anh ơi, cho e hỏi, sao e để 1 loạt giá trị '01.1111, '02.1111, ...... sau khi chạy marco trên nó trở thành 1.1111, 2.1111, ... sao nó không giữ nguyên giá trị khi copy qua vậy anh

1 trong các cách khắc fục:
PHP:
.Offset(Rws).Value = "'" & Clls.Value
 
Upvote 0
hihi, cảm ơn anh nhiều nha, e làm được rùi, nhưng còn điều này nữa, tại bây g e đưa vào 1 form có sẵn, mà dữ liệu chỉ được ghi từ dòng A3 trở xuống ( dòng A1, A2 là những dòng đặt tên rùi), muốn làm thế thì thay đổi giá trị j vậy anh. Cho e hỏi cái nữa, e muốn đặt thêm 1 lệnh điều kiện.
Ví dụ thế này: nếu ký hiệu là A thì nhảy xuống 3 hàng trống, B thì nhảy xuống 4 hàng trống,
anh SA_DQ chỉ giúp e với
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử như vầy xem sao:

PHP:
Option Explicit 
Sub Copy_n_Row() 
 Dim Clls As Range, Rws As Long 

  Rws=1
 For Each Clls In Sheet1.Range([A1], [A65500].End(xlUp)) 
   With Sheet2.[A65500].End(xlUp) 
      .Offset(Rws).Value = Clls.Value
      If Cls.Value ="A" Then Rws =3 Else Rws =4 
   End With 
 Next Clls 
End Sub

Câu này của bạn chưa chuẩn: "anh SA_DQ chỉ giúp e với "
Bạn nên viết là " Các bạn trên diễn đàn, anh SA_DQ chỉ giúp e với "

Bạn fải đề fòng việc mình đi xa, xa . . . mãi chứ, nhỉ?
 
Lần chỉnh sửa cuối:
Upvote 0
hihi, thì e thấy thix a thì e gọi, ah, nói vậy thôi, g hỏi tiếp, --=0, e copy marco của a vào rùi, g e thêm 1 đoạn marco nữa, nhưng đoạn marco sau không tự chạy ( nó là 1 marco xóa dòng không chứa dữ liệu), e k biết ghép làm sao để excel hiểu là sau khi thực hiện marco thứ 1 xong, thì nó thực hiện marco thứ 2.
Còn nữa, với câu hỏi trên, còn 1 vấn đề nữa mà anh, e muốn ở sheet thứ 2, nó sẽ copy số từ ô A 3 trở xuống mà anh, nó cứ copy chép qua đè lên dòng tiêu đề ở ô A1, và A2 không ah
Các bạn trên diễn đàn, anh SA_DQ giúp e với /-*+/
 
Lần chỉnh sửa cuối:
Upvote 0
Giờ hỏi tiếp, (2) e copy marco của a vào rùi, g e thêm 1 đoạn marco nữa, nhưng đoạn marco sau không tự chạy ( nó là 1 marco xóa dòng không chứa dữ liệu), e k biết ghép làm sao để excel hiểu là sau khi thực hiện marco thứ 1 xong, thì nó thực hiện marco thứ 2.
Còn nữa, (1) với câu hỏi trên, còn 1 vấn đề nữa mà anh, e muốn ở sheet thứ 2, nó sẽ copy số từ ô A 3 trở xuống mà anh, nó cứ copy chép qua đè lên dòng tiêu đề ở ô A1, và A2 không ah
Các bạn trên diễn đàn, anh SA_DQ giúp e với /-*+/

(1)
PHP:
 Rws=1 
 ' . . . . ' 
   With Sheet2.[A65500].End(xlUp)
Hai câu lệnh này nói lên 1 điều, rằng lần đầu tiên fải chép đến dòng nằm dưới dòng mà tại cột 'A' nó là dòng chứa dữ liệu cuối cùng;
Dị
ch từ tiếng Việt ra tiếng Việt thì như sau: Nếu tại cột 'A', ô [A2] đang là ô cuối của cột có chứa dữ liệu thì chép vô dòng có ô [A3]. (Ne61u vì lí do gì đó, bạn bỏ trống cột 'A' thì nó đè lên dữ liệu cũ là đương nhiên.
Bạn có macro tự viết, thì cố gắng mà dịch những dòng lệnh của cộng đồng thì sẽ khá nay mai ngay đó mà!

(2) Bạn xoá dòng ở trang tính 2; nhưng bạn đang ở trang tính nào (Vị trí hiện hành của bạn)
Vấn đề lưu ý cần thiết với bạn: Xoá dòng thì xoá từ dưới lên; Không thể cấm đầu cấm cổ xoá từ trên xuống;
Bằng không thì fải tạo vòng lặp gọi macro XoaDong chắc ăn là 3 lần trở lên
 
Upvote 0
e có đoạn mã sau, a e xem thử nha:

Option Explicit
-------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Tmp1, Tmp2, Tmp3, Func As WorksheetFunction
On Error Resume Next
Set Func = Application.WorksheetFunction
If Not Intersect(Range("A3:A1000"), Target) Is Nothing Then
With Sheets("DM")
Tmp1 = Func.Transpose(FindSpec(Target.Value, .Range("DM"), 2))
Tmp2 = Func.Transpose(FindSpec(Target.Value, .Range("DM"), 3))
Tmp3 = Func.Transpose(FindSpec(Target.Value, .Range("DM"), 4))
End With
Target.Offset(, 1).Resize(UBound(Tmp1)).Value = Tmp1
Target.Offset(, 2).Resize(UBound(Tmp2)).Value = Tmp2
Target.Offset(, 3).Resize(UBound(Tmp3)).Value = Tmp3
End If
End Sub
-------------------------------------------------------------------------
Private Sub XDT_Click()
Dim BlankRng As Range, Rng As Range, DelRng As Range
Set BlankRng = ActiveSheet.UsedRange.Columns("B:B").SpecialCells(xlCellTypeBlanks)
For Each Rng In BlankRng
If DelRng Is Nothing Then
Set DelRng = Rng
Else
Set DelRng = Union(DelRng, Rng)
End If
Next Rng
DelRng.EntireRow.Delete
End Sub
---------------------------------------------------------------------
đây là 2 công thức để làm 2 việc khác nhau, ý e muốn là viết làm sao, để nó thực hiện đoạn mã thứ 1, là sẽ thực hiện tiếp đoạn mã thứ 2, chứ hiện bây g, e phải gán 1 button cho việc thứ 2 (xóa dòng trống), cứ mỗi lần lọc dữ liệu (đoạn mã 1) xong, là e lại phải bấm button này.
 
Upvote 0
Web KT

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

Back
Top Bottom