excel 如何在某个日期后冻结公式中的单元格值?

jmo0nnb3  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(379)

我有一个单元格区域(Sheet 1!E3:E55),这些单元格使用公式从另一个工作表(Sheet 2!C7)上的特定单元格提取计算完成百分比。
我希望在该范围内的单元格(即Sheet 1!E3)的计算值在该工作表上的另一个单元格(即Sheet 1!A4)中指定的日期变为静态/锁定单元格值。
我知道这需要搜索引擎,但我是一个新手,并没有能够找到任何通过谷歌。谢谢!
我尝试过各种公式,但通过谷歌搜索发现,这只能通过宏来实现。我尝试记录自己的宏来复制然后粘贴单元格的值,但这只适用于一个单元格,而不是范围。不幸的是,我对宏的了解不够,无法编辑代码来获得我想要的。

w6mmgewl

w6mmgewl1#

  1. Private Sub Worksheet_Activate()
  2. '--------------------------------------------------------------------------------
  3. ' Right Click On "Sheet1" Tab and
  4. ' Select "View Code" and paste the following code
  5. '--------------------------------------------------------------------------------
  6. Dim FreezVal As Long, LastRow As Long, x As Long
  7. Dim FreezOnDate As Date, rowItemDate As Date
  8. Dim ws As Workbook
  9. Dim sh1 As Worksheet
  10. Dim sh2 As Worksheet
  11. Set ws = ThisWorkbook
  12. Set sh1 = ws.Sheets("Sheet1")
  13. Set sh2 = ws.Sheets("Sheet2")
  14. FreezOnDate = CDate(sh2.Range("E7").Value) 'refer to Sheet2!E7 value
  15. LastRow = sh1.Range("A3").End(xlDown).Row 'find last row of data in Sheet1
  16. For x = 3 To LastRow ''In Sheet1 loop till last row and compare value in cell E7 in Sheet2
  17. rowItemDate = CDate(sh1.Range("A" & x).Value)
  18. FreezVal = sh1.Range("E" & x).Value
  19. sh1.Range("D" & x).Value = "=" & sh1.Range("c" & x).Address & "/" & sh1.Range("B" & x).Address
  20. If rowItemDate = FreezOnDate Then
  21. sh1.Range("D" & x).Value = Range("D" & x).Value
  22. sh1.Range("A" & x, "D" & x).Font.Color = vbBlue ''freezed row highlighted
  23. Else
  24. sh1.Range("A" & x, "D" & x).Font.Color = vbBlack
  25. End If
  26. Next x
  27. End Sub

字符串

展开查看全部

相关问题