首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据Excel中的单元格更改更新日期?

如何根据Excel中的单元格更改更新日期?
EN

Stack Overflow用户
提问于 2018-02-24 21:14:16
回答 2查看 107关注 0票数 1

这是个小背景。在陆军航空业,我们必须至少每60天进行一次夜间格格尔(NG)飞行。此日期是从上次进行NG飞行时收集的,目的是以该模式显示和跟踪货币。

将上面链接的图片作为参考(实际书籍的屏幕截图),我尝试根据单元格(P列) (P28)中的输入(>或= 1.0)更新另一个选项卡(显示面板)上的日期(显示面板)中的日期(B列)(P28)。

在同一列中,每当在下面进行另一个NG小时条目时,它将再次执行脚本,前提是上述内容适用。

我试过打几句VBA的台词,但我运气不好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-24 21:56:10

这是我认为您需要的内容的外壳,它位于与监视表P的表关联的代码窗格中。

如果P列有更改,如果值为>=1,则触发

还有一点逻辑。只有当新值大于现有值时,我才更新C32。

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)

Dim updateCell As Range
Dim lastDateCell As Range
Set updateCell = ThisWorkbook.Worksheets("Display Panel").Range("C32")
Set lastDateCell = ThisWorkbook.Worksheets("Display Panel").Range("AA32")

If Target.Column = 16 And Target.Value >= 1 Then

       If Target.Offset(, -14) > updateCell Then 

           lastDateCell  = updateCell 
           updateCell = Target.Offset(, -14) 'only update if greater than existing

       End If

End Sub 

Flight Log工作表代码窗格中的代码:

票数 0
EN

Stack Overflow用户

发布于 2018-03-25 21:11:34

(代表问题作者发布解决方案)。

下面是我补充的内容。

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Flight Log").Unprotect "Password Here" 'This unprotects the sheet to allow changes

Dim updateCell As Range
Dim lastDateCell As Range
Set updateCell = ThisWorkbook.Worksheets("Computations").Range("A36") 'This is the primary date location
Set lastDateCell = ThisWorkbook.Worksheets("Computations").Range("A40") 'This is the backup date location

If Target.Column = 16 And Target.Value >= 1 Then 'This check P column for the value

       If Target.Offset(, -14) > updateCell Then 'If "P" returns the value, date in "B" is grabbed

           lastDateCell = updateCell 'This updates the primary date cell
           updateCell = Target.Offset(, -14) 'This ensures date is not overridden by lesser value

       End If

End If
Sheets("Flight Log").Protect "Password Here" 'This line reprotects the sheet
End Sub

此外,我还使用两个查找函数来根据VBS抓取的日期来计算小时:

代码语言:javascript
复制
=IFERROR(LOOKUP(A36,'Flight Log'!B:B,'Flight Log'!P:P),"/// NG DATE ERROR ///")

和,

代码语言:javascript
复制
=IFERROR(LOOKUP(A40,'Flight Log'!B:B,'Flight Log'!P:P),"/// NO B/U DATE ///")

在此之后,我使用另一个IF函数来验证是否误报了时间。

代码语言:javascript
复制
=IF(A37>=1,A36,IF(A41>=1,A40,"NG HOUR ERROR"))

简单的IF函数检查和验证时间没有被飞行员不正确地输入-这将提示VBS脚本获取那个日期-然后重新输入它的预定“正确”值。例如,“飞行员输入时间块,飞行员意识到他输入的时间是错误的,并纠正它。”这将避免他的错误,而不是一个整体的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48967670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档