Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将列单元格中的公式值和空格替换为零_Excel_Vba - Fatal编程技术网

Excel 将列单元格中的公式值和空格替换为零

Excel 将列单元格中的公式值和空格替换为零,excel,vba,Excel,Vba,我想要一个vba代码,它会提示输入列名,在提供列名后,它会将列中所有有公式或为空的单元格替换为零,并保留列的其余单元格不变。这是最新版本 它只在FirstRow和LastRow之间运行 如果公式包含DATE()或TODAY()则不归零。 代码: Sub PatchColumn_3() Dim FirstRow As String, LastRow As String Dim rng As Range, Cell As Range, v As String

我想要一个vba代码,它会提示输入列名,在提供列名后,它会将列中所有有公式或为空的单元格替换为零,并保留列的其余单元格不变。

这是最新版本

  • 它只在
    FirstRow
    LastRow
    之间运行
  • 如果公式包含
    DATE()
    TODAY()
    则不归零。
  • 代码:

        Sub PatchColumn_3()
            Dim FirstRow As String, LastRow As String
            Dim rng As Range, Cell As Range, v As String
            Dim s As String, FormulaCells As Range, BlankCells As Range
            
            FirstRow = "2"
            LastRow = "636"
            
            s = Application.InputBox(prompt:="enter column ID:", Type:=2)
            Set rng = Range(s & FirstRow & ":" & s & LastRow)
            
            On Error Resume Next
                Set FormulaCells = rng.Cells.SpecialCells(xlCellTypeFormulas)
                Set BlankCells = rng.Cells.SpecialCells(xlCellTypeBlanks)
            On Error GoTo 0
            
            If Not FormulaCells Is Nothing Then
                For Each Cell In FormulaCells
                    v = Cell.Formula
                    If InStr(v, "TODAY") = 0 And InStr(v, "DATE") = 0 Then Cell.Value = 0
                Next Cell
            End If
            
            If Not BlankCells Is Nothing Then BlankCells.Value = 0
         End Sub
    

    vba新手,因此尝试通过到处查找代码来解决问题,但没有效果。在我这方面没有什么。@gautam您必须发布您尝试过的代码,以便为关注此问题的人提供建议/解决方案。请阅读此文档:非常感谢您的支持。我有两个想法:1)如果我可以提供行范围,这样它就可以在工作表的某个需要的部分而不是整个工作表上执行操作,那将节省时间。2) 它将删除该行,而不是将单元格值替换为零。还得到了一个错误13类型mismatch@gautam-要删除整行,只需将
    r.Value=0
    替换为
    r.EntireRow.delete
    。但是您必须从底部循环,否则代码将跳过行。如果您使用
    AutoFilter
    并删除可见数据,可能会更快。谢谢Gmalc。在我的床单上看不到更多的东西。如果单元格中有日期公式以外的任何其他公式,我可以这样做,删除行或替换为零。感谢大家的支持support@gautam要提高宏的速度,请参阅“我的编辑”#1了解许多工作速度非常快的内容。在某些单元格中,日期公式需要保持原样。也可以有一个选项强制vba在某些行号之间运行,例如在第2行到第636行之间。再次感谢