我有一个Excel工作簿(1),其中包含约9个表格,可以从第二个工作簿(2)中获取和操作数据。
从工作簿(2)中获取数据后,我需要将工作簿(1)中的公式替换为公式所产生的结果值,然后保存带有结果的工作簿(1)。
是否有一种宏可以帮助我完成这项任务?
Sub Value()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
ws.UsedRange.Value = ws.UsedRange.Value
Next
End Sub
虽然这篇文章有点过时了,但我想提一下一个非循环方法,它非常有用。在某些情况下,循环可能会导致代码执行速度变慢。如果要在单元格中替换公式而不使用循环,请尝试以下方法:
With Sheets("example").Range("A1:C1000")
.value = .value
End With
您可以根据需要修改参考,但执行是无缝的、快速的,并且作为奖励 - 防止范围突出显示,如果您采用了.copy + .pastespecial xlPasteValues
方法,则无法清除。
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))),"")))
如果我改变公式为:
=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))),""))))
它将参考单元格中的文本值放入我的第二个工作表中。
这可能有助于您如何填充您的工作表,也可能没有帮助 - 我不太擅长VBA,这意味着我更多地手动完成事情 :)
.PasteSpecial xlPasteValues
。例如:Range("A1:D10").Copy Range("A1").PasteSpecial xlPasteValues
。 - user1274820