2015-06-08 27 views
7

Tôi có sổ làm việc Excel (1) với khoảng 9 trang tính đang kéo và thao tác dữ liệu từ sổ làm việc thứ hai (2).Excel để thay thế công thức bằng các giá trị

Sau khi kéo trong các dữ liệu từ bảng tính (2) Tôi cần để có thể thay thế các công thức trong bảng tính (1) với các giá trị kết quả mà các công thức đã tạo ra, từ đây sau đó tôi sẽ lưu bảng tính (1) với kết quả.

Có macro có thể làm điều này cho tôi không?

+0

Vâng, chỉ cần sao chép phạm vi và sử dụng '.PasteSpecial xlPasteValues' Một ví dụ sẽ là' Phạm vi ("A1: D10"). Phạm vi sao chép ("A1"). Dán đặc biệt xlPasteValues' – user1274820

+0

@Omar. Rất cám ơn Omar, tuy nhiên tôi cần một kịch bản để sao chép tất cả các giá trị trên một số trang tính, chỉ là một phạm vi. Ngoài ra tôi biết rất ít về VB do đó cần một kịch bản đầy đủ. – Alex

+0

Sử dụng vòng lặp For để xem qua tất cả các trang tính, sao chép rồi dán đặc biệt dưới dạng giá trị. Có rất nhiều ví dụ về cách làm những điều này. – teylyn

Trả lời

8

Mở workbook mới của bạn một số mã cơ bản như:

Sub Value() 
Dim ws As Worksheet 
For Each ws In ActiveWorkbook.Sheets 
    ws.UsedRange.Value = ws.UsedRange.Value 
Next 
End Sub 
+0

Cảm ơn brettdj đã làm việc một điều trị! – Alex

+0

Điều này sẽ hoạt động trong hầu hết các trường hợp, nhưng tôi sẽ sử dụng .Value2 thay vì .Value. Nó nhanh hơn không có vấn đề với bất kỳ loại dữ liệu di động nào. – AlexM

0

gì dường như làm việc cho tôi là sử dụng concatenate()

Vì vậy, ví dụ, công thức tôi đã tham khảo một tế bào từ sheet khác là:

=arrayformula(iferror(index('To Be Processed'!X:X,small(if($A$1='To Be 
Processed'!$Y2,row('To Be Processed'!X:X)),row((2:2))),""))) 

và nếu tôi thay đổi công thức để:

=concatenate(arrayformula(iferror(index('To Be 
Processed'!X:X,small(if($A$1='To Be Processed'!$Y2,row('To Be 
Processed'!X:X)),row((2:2))),"")))) 

và nó đặt vào giá trị văn bản từ ô tham chiếu vào trang tính thứ hai của tôi.

nào có thể hoặc không thể hữu ích tùy thuộc vào cách bạn cư tờ của bạn - tôi không phải là rất tốt với VBA, tuy nhiên, có nghĩa là tôi làm những việc hơn bằng tay :)

Các vấn đề liên quan