【问题标题】:Excel to replace formulas with valuesExcel用值替换公式
【发布时间】:2015-06-08 19:36:40
【问题描述】:

我有一个 Excel 工作簿 (1),其中包含大约 9 张工作表,用于从第二个工作簿 (2) 中提取和处理数据。

从工作簿 (2) 中提取数据后,我需要能够将工作簿 (1) 中的公式替换为公式产生的结果值,然后我将在此处保存工作簿 (1)结果。

有没有可以为我做这个的宏?

【问题讨论】:

  • 是的,只需复制范围并使用.PasteSpecial xlPasteValues 例如Range("A1:D10").Copy Range("A1").PasteSpecial xlPasteValues
  • @Omar。非常感谢 Omar,但是我需要一个脚本来复制多个工作表中的所有值,而不仅仅是一个范围。另外我对VB知之甚少,因此需要一个完整的脚本。
  • 使用 For 循环遍历所有工作表,复制然后粘贴特殊值。有很多代码示例如何做这些事情。

标签: vba excel


【解决方案1】:

在您的新工作簿上添加一些基本代码,例如:

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

【讨论】:

  • 这应该适用于大多数情况,但我会使用 .Value2 而不是 .Value。它比任何单元格数据类型都没有问题要快。
【解决方案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))),"")))

如果我将公式改为:

=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 不是很好,这意味着我需要手动做更多的事情 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多