vba - 使用宏 + IF 公式 + 静态日期?
问题描述
我才刚刚开始使用 Excel,所以有点新手 - 请原谅我的无知/缺乏正确的术语!
我目前有 E 列,人们将在其中手动输入“Y”来标记某些帐户。标记这些帐户后,我有一个宏按钮可以将所有这些 Y 更改为“标记”,以便我知道它们已被处理。
我希望列 F 添加标记这些标记的日期,所以我有一个 IF 公式来说明如果“Raised”在 colE 中,则在 colF 中添加今天的日期。我在两件事上遇到了问题,首先我需要它忽略 colF 中已经有日期的任何内容(因为我不希望覆盖旧日期),而且我不知道如何“冻结”日期。目前,每当我打开工作表时,它都会将所有旧日期更改为今天的日期,但我需要保留输入时的任何日期。
我所有的 excel 都是通过阅读论坛自学的(所以如果这很糟糕,请原谅我!),但目前我想出了这个:
Sub ResetFlags()
'
' ResetFlags Macro
'
'
Sheets("Matrix").Select
Columns("E:E").Select
Range("E2").Activate
Selection.Replace What:="y", Replacement:="Flagged", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("E12").Select
Dim r As Range
Set r = Range("F:F").Cells.SpecialCells(xlCellTypeBlanks)
On Error Resume Next
r.Formula = "=IF((RC[-1]=""Flagged""),(TODAY()),"""")"
On Error Resume Next
End Sub
该宏似乎运行良好,因为它将 Y 替换为“已标记”,它跳过旧日期并添加今天的日期。但每次我打开工作簿时,它都会将所有日期更改为今天。如何冻结日期?!
此外,当我运行宏时,虽然它在最后全部运行,但我得到一个错误框,上面写着“运行时错误 1004:未找到单元格”。我无法弄清楚/如何摆脱它。
非常感谢!!
解决方案
认为这应该这样做。您可以用值替换公式,这样它就不会不断更新。
On Error 应该在 SpecialCells 之前 - 如果没有空格,则没有可以应用公式的范围,因此会出现错误。
此外,无需选择任何内容。
我还没有对此进行测试,所以如果它第一次不起作用,也就不足为奇了。
Sub ResetFlags()
With Sheets("Matrix").Columns("E:E")
.Replace What:="y", Replacement:="Flagged", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Dim r As Range
On Error Resume Next
Set r = .Range("F:F").Cells.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
End With
If Not r Is Nothing Then
r.Formula = "=IF((RC[-1]=""Flagged""),(TODAY()),"""")"
r.Value = r.Value
End If
End Sub
推荐阅读
- python - 如何更改数据框形状/格式以将列名转换为标识符列
- swift - 如何在 MacOS (Swift) 上使用 XML 中的 HEX 数据生成灰度位图图像
- javascript - 使用 Javascript 在脚本中的 DIV 中的动态 Img Src URL
- amazon-web-services - 将 DynamoDB 事件发送到 Pinpoint
- javascript - TypeError:Products.find 不是(react/typescript)中的函数
- xml - 使用 RFC 5261 使用 Laravel Guzzle 修补 XML 文档
- html - 表情符号在 Windows 10 浏览器中渲染太大
- .net - 对 Authenticode .NET Framework 库和可执行文件有何影响
- spring-data-jpa - 我需要根据应用程序捕获第一个触发日期时间并将标志设置为“N”,因为未收到确认
- angular - 使用带有 ng-template 的动态组件的问题