Cho minh hỏi về cách insert và paste?

Liên hệ QC

anhchanghamhoc

Thành viên mới
Tham gia
18/12/06
Bài viết
40
Được thích
2
Các pác cho mình hỏi có code nào sử dụng như là Insert copied cells nhưng có điều kiện (điều kiện cụ thể là tại hàng có giá trị thì mới tiến hành insert copied cells) nhờ các pác chỉ hộ mình nhé!
giống như hình trong file dưới đây
 
Mình nghĩ vấn đề này cũng dễ giải quyết, nhưng bạn cần nêu cụ thể hơn về cái điều kiện, các yêu cầu đặt ra để: có cái cụ thể mà giải quyết.
 
Upvote 0
mình tiến hành insert copied cells nguyên khối tô màu vào những vị trí có điều kiện là: giá của ô trên khác với ô dưới kế nó ,tóm lại Tôi muốn nếu như ô A2 = A1 thì nothing happen, nếu A2<>A1 thì insert một dòng giữa A2 và A1. Tương tự như vậy với các số còn lại.
Xin xem ví dụ sau:
 

File đính kèm

  • Book10.xls
    36.5 KB · Đọc: 32
Upvote 0
Bạn thử cái ni xem sao?!

Mã:
Option Explicit:                Option Base 1 [b]
Sub CopyToRow() [/b]
    Dim MRng(30)
 Dim Rng As Range
 Dim StrC As String, lRow As Long, iJ As Integer
 
 Sheets("S1").Select
 For Each Rng In Range("B2:X2")
    lRow = 1 + lRow:                    MRng(lRow) = Rng.Value
 Next Rng
 [color="Blue"]' 'B2:X2' - là vùng nguồn để chép. [/color]
 Sheets("D119").Select:                 lRow = 9
 Do
    lRow = 1 + lRow:                    StrC = "A" & CStr(lRow)
    Range(StrC).Select:
    With Selection
        If Len(.Value) < 1 Then Exit Do
        If .Value <> .Offset(-1, 0).Value Then
            .EntireRow.Insert
            For Each Rng In Range("B" & CStr(lRow) & ":X" & CStr(lRow))
                iJ = iJ + 1
                Rng.Value = MRng(iJ)
            Next Rng
            lRow = lRow + 1:                iJ = 0
        End If
    End With
 Loop [b]
End Sub [/b]
 
Upvote 0
Mình ghi nhằm ,tóm lại Tôi muốn nếu như ô A2 = A1 thì nothing happen, nếu A2<>A1 thì insert copied cells nhiều dòng giữa A2 và A1. Tương tự như vậy với các số còn lại.
Xin xem ví dụ sau:[/quote]
 

File đính kèm

  • Book10.xls
    36.5 KB · Đọc: 167
Upvote 0
Dear all,
--------
Theo em bài toán chưa cần thiết phải nhờ đến lập trình. Chịu khó và thủ công một chút chắc là anhchangchamhoc cũng sẽ hài lòng:

- Tạo 1 cột phụ để tìm ra dấu hiệu Insert Row, công thức có thể là
=A2<>A1
- Tại cột phụ, lọc ra kết quả TRUE
- Select khối dữ liệu lọc được, Ctrl + G
- Goto Spacial = Visible Cells only (Alt+S+Y+Enter)
- Insert Row (Alt + I + R)
- Bỏ chế độ Filter Mode, nhập ký tự bất kỳ vào cột phụ, mục đích là phủ đầy vùng dữ liệu để có thể lọc được các dòng trống (nếu không muốn thì chọn cả khối dữ liệu để Filter)
- Lọc ra tại cột A:A các dòng trống (Blanks)- Tại dòng trống đầu tiên lập công thức Cell hiện hành = Cell trước đó, ví dụ dòng trống đầu tiên là A17, công thức tại A17: = A16
- Copy công thức cho các dòng trống còn lại
[- Copy Paste Special Value, nếu muốn]

Nếu lười lập trình, bạn có thể nhờ Macro "thực hiện đỡ" một phần.
Nhưng chắc anhchangchamhoc đâu đến nỗi lười như thế! Nhỉ!
 
Lần chỉnh sửa cuối:
Upvote 0
Vâng từ trước đến giờ mình vùng cách thủ công ấy, nhưng do nhu cầu công việc ngày càng nhiều nên mình mới dùng code cho đỡ thời gian còn làm công việc khác, pác Cường biết làm như vậy là mình làm thủ công tới mấy trăm lần không?)
 
Upvote 0
pác NVSON ơi! giúp mình giải quyết vấn đề nay nhé ! mình đang cần lắm
Thank you!!!!!!
 
Upvote 0
nếu A2<>A1 thì insert copied cells nhiều dòng giữa A2 và A1. Tương tự như vậy với các số còn lại. Xin xem ví dụ sau:
/)/hiều dòng là bi nhiêu dòng zậy?!

(opy mảng tô màu vô dòng đó, vậy mảng nguồn này ở đâu?
Bạn làm rõ vấn đề hơn đi: Bạn nói tiếng 'Nào' mình lại hiểu tiếng Ý thì khó trao đổi lắm!
 
Upvote 0
anhchanghamhoc đã viết:
pác NVSON ơi! giúp mình giải quyết vấn đề nay nhé ! mình đang cần lắm
Vậy bạn thử file sau nhé!
P/S: Các bạn là dân ĐCCT có thể tham khảo (Rất tốt để tổng hợp số liệu phân chia các lớp đất...)
 

File đính kèm

  • Book10.xls
    47.5 KB · Đọc: 16
Upvote 0
Đúng rồi pác à !
Mình muốn trong worksheet D119 nếu như ô A2 = A1 thì nothing happen, nếu A2<>A1 thì insert 6 dòng giữa A2 và A1,tự như vậy với các số còn lại.. Xong rồi coppy nguồn dữ liệu từ Sheet1.range(A2:W8) rồi paste vào những dòng Blanks đã vừa insert trong worksheet D119 nhưng phải giữ công thức trong dữ liệu nguồn range(A2:W8), cứ coppy như vậy cho đến hết cuối dòng dữ liệu trong worksheet D119 trong file book10 tôi tải lên
Các Pác giúp mình nhé! thank you!
 

File đính kèm

  • Book10.xls
    36 KB · Đọc: 16
Upvote 0
Bạn sửa lại Macro như sau:
Mã:
Option Explicit
Public Sub InsertCell()
On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim i As Long
Dim TLoi
TLoi = MsgBox("Ban co muon tao backup du lieu trong sheet hien hanh khong?", vbInformation + vbYesNo)
If TLoi = vbYes Then ActiveSheet.Copy Before:=ActiveSheet
Dim shtName As Worksheet
Set shtName = ActiveSheet
'Khoi tao gia tri bien i de xac dinh dong dau tien trong khoi du lieu
i = InputBox("Nhap dong du lieu dau tien trong vung du lieu can Insert", , 9)
If Err.Number <> 0 Then Exit Sub
Do
    i = i + 1
    If Cells(i, "A") <> Cells(i - 1, "A") And Not IsEmpty(Cells(i - 1, "A")) Then
        Rows(i & ":" & i + 5).Select
        Selection.Insert Shift:=xlDown
        'Copy 6 dong
        Sheets("Sheet1").Select
        Range("A2:W8").Select
        Selection.Copy
        shtName.Select
        Cells(i, "A").Select
        ActiveSheet.Paste
        i = i + 5
    End If
Loop While i <= (ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1)
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
Upvote 0
Pác NVSON nhà ta tuyệt quá, sao những code pác viết đọc hay thật!
Thank you very much!
 
Upvote 0
Web KT
Back
Top Bottom