使用Excel 2013工作簿,我已将我的Col F和Col AD从公式更改为仅在MFG Hourly Employees工作表中的值。有没有办法调整我的代码来识别第一列有公式并仅保存为值,然后第二列相同(目前F4和AD 4)。到目前为止我的代码是:
Sub SaveAsValuesOnly()
Sheets("MFG Hourly Employees").Select
Range("F4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("AD4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("F4").Select
End Sub
答案 0 :(得分:2)
Dim rngCell As Range
For Each rngCell In Selection
If rngCell.HasFormula Then
rngCell.Value = rngCell.Value
End If
Next
在
rng.Value = rng.Value
删除公式并保留值。看起来你记录了Makro所以我会指出它 编辑:更长的更明确的代码和解释。
Sub removeFormulas()
Dim rngCell As Range
Dim searchRange As Range
searchRange = Worksheets("Sheet1").Range("A1:D10")
For each rngCell In searchRange
If rngCell.HasFormula Then
rngCell.Value = rngCell.Value
End If
Next
End Sub
说明:
首先,我们启动一个sub子程序,它可以解决你的问题。 Sub由Sub removeFormulas()
启动,以End Sub
结束。现在我们使用Dim X As Y
设置变量,其中X
是名称,Y
是数据类型,这里是Range
对象。
现在我们设置searchRange
,我们要在其中查找公式,您可以根据自己的需要进行设置。在For
循环中,我们可以遍历rngCell
中的每个searchRange
当我们点击Next
时,我们返回For
,直到我们遍历searchRange
中的所有单元格{1}}。 If语句显然chekcsif Cell包含任何具有.HasFormula
属性的公式,当它具有公式时,我们只在单元格中写入可见.Value
并覆盖公式。