gpt4 book ai didi

excel - VBA for Excel 填充范围内缺少的工作日并标记 "New Mondays"

转载 作者:行者123 更新时间:2023-12-04 22:16:40 27 4
gpt4 key购买 nike

我正在为 MS Excel 2007 新学习 VBA。我写了一个简单的循环来填补一周中缺失的几天,如下所示。因此,对于每一对连续的日子重复相同的行,只是更改了日期的名称(我在这里省略了除了两个之外的所有内容,因为它太长了)。唯一需要注意的是,每当创建一个值为“Monday”的新单元格时,我希望将“New”添加到右侧的单元格中。所以有额外的行 i.range("B2").Value = "New"对于第一个 block 。

Sub FillWeek()

For Each i In Selection
If i.Value = "Sunday" And i.Range("A2") <> "Monday" Then
i.Range("A2").Insert
i.Range("A2").Value = "Monday"
i.Range("B2").Value = "New"
i.Range("A2").Interior.Color = 192
End If

Next i

For Each i In Selection
If i.Value = "Monday" And i.Range("A2") <> "Tuesday" Then
i.Range("A2").Insert
i.Range("A2").Value = "Tuesday"
i.Range("A2").Interior.Color = 192
End If

Next i

#And the code continues for all other consecutive days pairs
我选择了下面最左边的单元格,结果在第 2 列和第 3 列中给出(在 Excel 中,它们在第 1 列和第 2 列中给出)。 我已经用斜体表示了意料之外的内容。


第 1 行(选择)
结果(刚刚替换了第 1 列)
(这已添加到第 2 列)


星期日
星期日

周二
星期一


周三
周二

周四
周三

星期日
周四

周三
周五

周六
周六


周一
星期日

周三
星期一


周二


周三


星期四


周六


周一


周三



意外结果
  • 为什么"new"不是在星期一的旁边添加,而是在星期六的旁边添加了一次,然后在星期一的旁边没有添加一次?
  • 为什么在星期四之后没有添加星期五,在星期六之后没有在最后添加星期日?
  • 最佳答案

    这是一种方法:

    Sub AddDays()
    Dim days As Variant
    Dim ct As Long
    Dim startCell As Range
    days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
    On Error Resume Next
    Set startCell = Application.InputBox("Select the first cell containing days of the week", "Days of week check", ActiveCell.Address, , , , , 8)
    On Error Goto 0
    If Not startCell Is Nothing Then
    Do
    If startCell.Offset(ct).Value <> days(ct) Then
    startCell.Offset(ct).EntireRow.Insert
    startCell.Offset(ct).Value = days(ct)
    startCell.Offset(ct, 1).Value = "New"
    Else
    ct = ct + 1
    End If
    Loop Until ct >= 7
    End If
    结束子

    关于excel - VBA for Excel 填充范围内缺少的工作日并标记 "New Mondays",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68469264/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com