仅保存为公式中的值,使用公式识别列

时间:2016-04-22 15:02:49

标签: vba excel-vba excel

使用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 

1 个答案:

答案 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并覆盖公式。