首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从日期格式VBA中减去整数

从日期格式VBA中减去整数
EN

Stack Overflow用户
提问于 2016-02-09 10:44:19
回答 2查看 254关注 0票数 2

下面是我开发的代码。目标是从数据中减去"1“或"2”,这取决于分别是星期六还是星期日。列3包含短日期格式的日期,第5列包含相同的日期,但转换为"dddd“格式。

错误发生在行的for循环中。

代码语言:javascript
复制
if cells(i,5).Value = "Sat" Then

这里有趣的是,代码在没有“错误”的情况下运行--比如说,它只是跳过了if语句的复杂性,在这一行。

代码语言:javascript
复制
Sub DataChange()
    Dim i
    Dim n
    n = Cells(Rows.Count, 3).End(xlUp).Row
    For i = 4 to n
        If Cells(i,5).Value = "Sat" Then
            Cells(i,3).Value = Cells(i,3).Value - 1
        End If
        If Cells(i,5).Value = "Sun" Then
            Cells(i,3).Value = Cells(i,3).Value - 2
        End If
    Next i
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-09 10:51:27

代之以:

代码语言:javascript
复制
For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row
    With Cells(i, 3)
        .Value = .Value - IIf(Weekday(.Value, vbSaturday) < 3, Weekday(.Value, vbSaturday), 0)
    End With
Next

Weekday()方法根据所提供的开始日期返回一个整数,表示一周中的某一天。Weekday(.Value, vbSaturday)周六将返回1,周日将返回2。结合即时If IIf(),我们可以检查返回的值是否小于3(例如1或2),如果是,则从C列的日期减去该值。

票数 1
EN

Stack Overflow用户

发布于 2016-02-09 10:58:30

列5包含相同的日期,但转换为"dddd“格式。

"dddd“公开”星期六“而不是”星期六“,而不是暴露在"ddd”中的"Sat“。

仍然尝试用单元格(i,5).Value更改单元格(i,5).Text:

代码语言:javascript
复制
If Cells(i,5).Text = "Sat" Then ....

代码语言:javascript
复制
If Cells(i,5).Text = "Saturday" Then ....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35289945

复制
相关文章

相似问题

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