Copy và paste dữ liệu cách 1 dòng

Liên hệ QC

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
Chào anh chị! em có cột C dữ liệu, copy và paste sang cột E các dữ liệu tách ra 1 dòng như hình bên dưới. nhờ a chị giúp đỡ. Em xin cảm ơn

Untitled.png
 

File đính kèm

Upvote 0
Chào anh chị! em có cột C dữ liệu, copy và paste sang cột E các dữ liệu tách ra 1 dòng như hình bên dưới. nhờ a chị giúp đỡ. Em xin cảm ơn

View attachment 201663
Tại C17, bạn gõ công thức =C2+0.5, fill xuống dưới --> sort lại cột C tăng dần --> copy qua cột E --> sử dụng Special cells để chọn các ô có công thức --> nhấn Delete.
 
Upvote 0
Kết quả không như mong đợi rồi ạ! mình muốn copy vào nó tách luôn ra. file mình test copy vào cột C hoặc cột E ko thấy tách
Bài đã được tự động gộp:

Tại C17, bạn gõ công thức =C2+0.5, fill xuống dưới --> sort lại cột C tăng dần --> copy qua cột E --> sử dụng Special cells để chọn các ô có công thức --> nhấn Delete.
mình muốn không phải nguyên là số, có thể là text hoặc 1 dãy số không theo az
 
Upvote 0
Kết quả không như mong đợi rồi ạ! mình muốn copy vào nó tách luôn ra. file mình test copy vào cột C hoặc cột E ko thấy tách
Bài đã được tự động gộp:


mình muốn không phải nguyên là số, có thể là text hoặc 1 dãy số không theo az
Có nghĩa bạn muốn copy hết dữ liệu cột C vào cột E thì dữ liệu tự cách nhau 1 dòng chứ không phải nhập liệu từ C sang E?
 
Upvote 0
mình muốn không phải nguyên là số, có thể là text hoặc 1 dãy số không theo az
Sub đây:
PHP:
Public Sub s_Gpe()
Dim sArr(), dArr(), I As Long, K As Long, R As Long
    sArr = Range("C2", Range("C2").End(xlDown)).Value
    R = UBound(sArr): K = -1
ReDim dArr(1 To R * 2, 1 To 1)
    For I = 1 To R
        K = K + 2
        dArr(K, 1) = sArr(I, 1)
    Next I
    Range("E2").Resize(K) = dArr
End Sub
 
Upvote 0
Upvote 0
Sub đây:
PHP:
Public Sub s_Gpe()
Dim sArr(), dArr(), I As Long, K As Long, R As Long
    sArr = Range("C2", Range("C2").End(xlDown)).Value
    R = UBound(sArr): K = -1
ReDim dArr(1 To R * 2, 1 To 1)
    For I = 1 To R
        K = K + 2
        dArr(K, 1) = sArr(I, 1)
    Next I
    Range("E2").Resize(K) = dArr
End Sub
Lúc nữa sẽ hỏi là em muốn áp dụng cho nguyên một bảng dữ liệu cơ.
 
Upvote 0
Bạn nhập công thức
E2=IF(ISODD(ROW()-ROW($E$2)),"",OFFSET($C$2,(ROW()-ROW($E$2))/2,))
fill xuống.
Hoặc cách 2: copy từ cột C sang E, tạo thêm 1 cột phụ số thứ tự F2:F16, copy F2:F16 xuống F17 rồi sort E2:F31 theo cột F
 
Upvote 0
Chào anh chị! em có cột C dữ liệu, copy và paste sang cột E các dữ liệu tách ra 1 dòng như hình bên dưới. nhờ a chị giúp đỡ. Em xin cảm ơn

View attachment 201663
Trước khi hỏi thì nên lường trước mọi vấn đề sảy ra.
Còn các cột phía trước và phía sau cột C thì sao? Nó cố định hay phải di chuyển theo.
Một cách hỏi phi thực tế không lẽ theo dõi dữ liệu chỉ có 1 cột.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Upvote 0
Chào anh chị! em có cột C dữ liệu, copy và paste sang cột E các dữ liệu tách ra 1 dòng như hình bên dưới. nhờ a chị giúp đỡ. Em xin cảm ơn

View attachment 201663
Bài 11 tôi nêu rõ nhưng không thấy bạn ý kiến gì?
Nên tôi làm thí cho bạn, việc còn lại là tùy cơ ứng biến. Cách dùng:
- Tại A2 muốn Insert bao nhiêu dòng thì gõ con số vào đó.
- Tại B2 muốn di chuyển (tính từ cột C) sang phải bao nhiêu cột thì gõ con số vào đó.

Mã:
Sub Copy_Insert()
    Dim Dong As Integer
    Dim SoDongInsert
    Dim Cot As Integer
    Dim i As Integer
    Dim j As Integer
  
    Dong = 2
    SoDongInsert = Sheet1.[A2].Value + 1
    Cot = Sheet1.[B2].Value
    j = 0

    Sheet1.Range("C2", Range("C2").End(xlDown)).Select
  
    For i = 0 To 1000 Step SoDongInsert
        Sheet1.Cells(Dong + i, Cot + 3).Value = ActiveCell.Offset(j, 0).Value
    j = j + 1
    Next i

End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cái này giản dị như một nắm xôi vò. Muốn code VBA thì cũng dùng cách giản dị và sát với yêu cầu nhất.
Đếm từng ô đầu vào, ghi cách dòng đầu ra. Hết.

Sub CopDuLieu()
' xác định range cần copy ở đây
CopVungDuLieu rangeCanCopy, oDauRa
End Sub

Sub CopVungDuLieu(byVal rI as range, byVal rO as range)
' sub chép dữ liệu từ rI (trọn range) qua rO (ô đầu tiên), cách dòng 1
Dim eI
For each eI in rI
rO = eI
set rO = rO.Offset(2,0)
Next eI
End Sub
 
Upvote 0
Sub đây:
PHP:
Public Sub s_Gpe()
Dim sArr(), dArr(), I As Long, K As Long, R As Long
    sArr = Range("C2", Range("C2").End(xlDown)).Value
    R = UBound(sArr): K = -1
ReDim dArr(1 To R * 2, 1 To 1)
    For I = 1 To R
        K = K + 2
        dArr(K, 1) = sArr(I, 1)
    Next I
    Range("E2").Resize(K) = dArr
End Sub
Cách này hợp với mong muốn của em. Anh chỉnh dùm lại hộ em chút
khi copy sẽ lưu copy clipboad rồi mình chỉ paste ra 1 vị trí active ở ô excel
 
Lần chỉnh sửa cuối:
Upvote 0
Không để vị trí động bất kỳ à anh, em muốn copy thì dữ liệu đã lưu rồi paste đến 1 vị trí bất kỳ
Thế là công quả của tất cả mọi người đều theo gió bay rùi. Có mỗi cái của anh " Vẹt nhỏ" là khả thi. Khả thi bởi trước câu hỏi kiều này thì đừng gây thơ mà trả lời cụ thể.
 
Upvote 0
Bạn nhập công thức
E2=IF(ISODD(ROW()-ROW($E$2)),"",OFFSET($C$2,(ROW()-ROW($E$2))/2,))
fill xuống.
Hoặc cách 2: copy từ cột C sang E, tạo thêm 1 cột phụ số thứ tự F2:F16, copy F2:F16 xuống F17 rồi sort E2:F31 theo cột F
Cách này dùng cũng được, em cảm ơn ạ
Bài đã được tự động gộp:

Tạo 1 cột phụ và gõ 1, 3, 5... đến 29
Phía dưới gõ tiếp 2, 4, 6... đến 30
Quét chọn 2 cột và sort tăng dần theo cột phụ

View attachment 201677
cách này là đổi vị trí! nếu đổi như vậy thì các hàng khác đổi loạn lên ạ.
Bài đã được tự động gộp:

Giống ý tưởng của em ở trên :p
Em nghĩ không được vì còn liên quan đến các dữ liệu hàng khác sẽ chạy loạn theo
 
Lần chỉnh sửa cuối:
Upvote 0
Bài 11 tôi nêu rõ nhưng không thấy bạn ý kiến gì?
Nên tôi làm thí cho bạn, việc còn lại là tùy cơ ứng biến. Cách dùng:
- Tại A2 muốn Insert bao nhiêu dòng thì gõ con số vào đó.
- Tại B2 muốn di chuyển (tính từ cột C) sang phải bao nhiêu cột thì gõ con số vào đó.

Mã:
Sub Copy_Insert()
    Dim Dong As Integer
    Dim SoDongInsert
    Dim Cot As Integer
    Dim i As Integer
    Dim j As Integer

    Dong = 2
    SoDongInsert = Sheet1.[A2].Value + 1
    Cot = Sheet1.[B2].Value
    j = 0

    Sheet1.Range("C2", Range("C2").End(xlDown)).Select

    For i = 0 To 1000 Step SoDongInsert
        Sheet1.Cells(Dong + i, Cot + 3).Value = ActiveCell.Offset(j, 0).Value
    j = j + 1
    Next i

End Sub
vâng em cảm ơn! sáng đi làm giờ mới xem được. nhiều người giúp quá, em đang thử! cảm ơn các anh chị nhiều
Bài đã được tự động gộp:

chỗ này em không biết diễn tả thế nào!
Nôm la là khi em ấn copy dữ liệu rồi và chạy code sẽ xuất ra kết quả (vị trí điền ở ô active excell mình đặt con trỏ)
Public Sub s_Gpe()
Dim sArr(), dArr(), I As Long, K As Long, R As Long
sArr = Range("C2", Range("C2").End(xlDown)).Value
R = UBound(sArr): K = -1
ReDim dArr(1 To R * 2, 1 To 1)
For I = 1 To R
K = K + 2
dArr(K, 1) = sArr(I, 1)
Next I
ActiveCell.Resize(K) = dArr
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom