Macro dán trong khi giữ nguyên công thức


0

Có cách nào để tôi có bản sao macro và dán dữ liệu từ một trang tính khác lên trang chủ trong khi vẫn giữ các công thức trên trang chủ không? Vì vậy, về cơ bản tôi muốn macro của mình chỉ dán văn bản trong khi vẫn giữ định dạng và công thức của bảng tính chính. Tôi cũng muốn xóa dữ liệu mà tôi đang sao chép khỏi bảng tính hàng ngày của mình sau khi tôi dán nó vào bản gốc. Đây là macro của tôi cho đến nay

Sub macro ()

Workbooks.Open Filename:= _
        ("I:\Master Copy.xlsm"), Password:="nm"

Dim lNewRow As Long
Dim lDataRow As Long

Windows("Master Copy").Activate
ActiveSheet.Unprotect Password = "nm"
    Windows("Daily Worksheet").Activate
    '1. Find last used row in both sheets
    lNewRow = Workbooks("Daily Worksheet").Worksheets("Sheet1").Cells(Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row
  Windows("Master Copy").Activate
    lDataRow = Workbooks("Master Copy").Worksheets("Submission Log").Cells(Worksheets("Submission Log").Rows.Count, 1).End(xlUp).Row
    lDataRow = lDataRow + 1
    '2. Copy data
    Workbooks("Daily Worksheet").Worksheets("Sheet1").Range("A2:R" & lNewRow).Copy
    '3. Paste data
    Worksheets("Submission Log").Range("A" & lDataRow).PasteSpecial

    Application.CutCopyMode = False
    Selection.ClearContents

  Windows("Master Copy").Activate

ActiveSheet.Protect Password = "nm"


End Sub

Nếu bạn sao chép và dán toàn bộ phạm vi và phạm vi đó chứa các công thức và hằng số, không có cách nào bạn chỉ có thể dán các hằng số và không ghi đè lên các công thức. Bạn sẽ cần sao chép và dán chỉ các ô với các hằng số. Thay đổi cách tiếp cận của bạn.
teylyn

Tôi đã thay đổi phạm vi, nhưng tôi vẫn muốn giữ định dạng của các cột nhất định. Tôi có xác thực dữ liệu trong các cột, tôi có thể dán và giữ xác thực dữ liệu không?
Josh W

Bạn chỉ có thể dán các giá trị, nhưng nó sẽ áp dụng cho toàn bộ phạm vi. Nếu phạm vi chứa các công thức, thì chúng sẽ được dán làm giá trị của chúng. Xác thực và định dạng dữ liệu sẽ không được thay đổi nếu bạn chỉ dán các giá trị. Bạn cũng có thể chỉ dán xác thực dữ liệu hoặc chỉ định dạng. Tại sao bạn không xem tài liệu này? !! Đó là những gì nó ở đó cho.
teylyn

cảm ơn, tôi đã kết thúc chỉ dán văn bản và thêm mã khác để định dạng lại văn bản đã dán. Tài liệu là gì?
Josh W

Câu trả lời:


0

Bạn không thể làm những gì bạn yêu cầu với một dòng mã.

Tôi giả sử những gì trong mỗi cột tương thích phần lớn giữa hai trang tính của bạn (nếu không, bạn sẽ không cố gắng sao chép toàn bộ phạm vi từ trang này sang trang khác).

Đây là một cách để làm điều này:

  1. Sao chép toàn bộ phạm vi vào trang đích như bạn hiện tại, nhưng chỉ dán văn bản. Điều này sẽ giữ lại định dạng của trang đích, nhưng ghi đè lên các công thức bạn muốn giữ.
  2. Trên trang đích, sao chép các công thức bạn muốn giữ từ hàng trên sang hàng vừa dán. Excel sẽ tự động cập nhật mọi tham chiếu tương đối trong các công thức. Bạn sẽ phải làm điều này cho từng nhóm ô liền kề có chứa công thức.

Chắc chắn có nhiều cách khác để làm điều này, nhưng tất cả chúng sẽ yêu cầu mã VBA của bạn để "biết" các tham chiếu (hoặc cách tìm ra chúng) của các ô cần được xử lý khác nhau. Không có tính năng tích hợp nào thực hiện một số loại bản sao riêng biệt mà bạn cần cho một phạm vi trong một thao tác. Chúng tôi có VBA vì những thứ như thế này!


Đối với việc xóa dữ liệu khỏi bảng nguồn, tôi cho rằng thứ bạn đang tìm kiếm là phương thức .ClearContents .


Tôi cuối cùng đã làm một cái gì đó tương tự như thế này. Cảm ơn
Josh W
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.