excel VBA,检查日期列表属于哪一周

excel VBA,检查日期列表属于哪一周,excel,vba,Excel,Vba,这里的VBA用户非常缺乏经验 我有一个固定长度范围内的日期列表和另一个固定范围内的周开始日期列表。 我想检查一下每个日期都是在哪一周结束的 我开始编写代码,但现在在尝试为每个循环嵌套两个for..时遇到了问题。 如果和下一个陈述的位置不正确,我想我就完了。 我得到错误“end if WITH block if”。 我还想知道,是否有必要使用两个for..each循环来实现这一点 我刚刚输入了“是”和“否”两行,以检查我试图做的是否有效——如果有效,我将继续用下一阶段的代码替换这些打印行 任何帮助

这里的VBA用户非常缺乏经验

我有一个固定长度范围内的日期列表和另一个固定范围内的周开始日期列表。 我想检查一下每个日期都是在哪一周结束的

我开始编写代码,但现在在尝试为每个循环嵌套两个for..时遇到了问题。 如果和下一个陈述的位置不正确,我想我就完了。 我得到错误“end if WITH block if”。 我还想知道,是否有必要使用两个for..each循环来实现这一点

我刚刚输入了“是”和“否”两行,以检查我试图做的是否有效——如果有效,我将继续用下一阶段的代码替换这些打印行

任何帮助都将不胜感激

谢谢

Dim due As Range
Dim dueDate As Date
Dim datecell As Range
Dim cashflow As Range
Dim cashcell As Range
Dim startweek As Date
Dim endweek As Date

Set due = Range("H21:H36")
Set cashflow = Range("N19:AT19")

    For Each cashcell In cashflow
        If IsDate(cashcell.Value) Then
            startweek = cashcell.Value
            endweek = cashcell.Offset(0, 2).Value

                For Each datecell In due

                If datecell >= startweek And datecell < endweek Then

                    Debug.Print "YES"
                    Else
                    Debug.Print "NO"
        End If
        End If
    Next datecell
    Next cashcell

End Sub

Dim到期日期范围
将日期设置为日期
作为范围的单元格
现金流范围变小
暗现金池作为射程
黯淡的startweek作为日期
周末日期
设定到期日=范围(“H21:H36”)
设置现金流=范围(“N19:AT19”)
对于现金流中的每个现金单元
如果是IsDate(cashcell.Value),则
startweek=cashcell.Value
endweek=cashcell.Offset(0,2).Value
对于到期的每个日期单元格
如果datecell>=startweek且datecell
自由匹配
If
For
循环的缩进开始和结束:

Dim due As Range
Dim dueDate As Date
Dim datecell As Range
Dim cashflow As Range
Dim cashcell As Range
Dim startweek As Date
Dim endweek As Date

Set due = Range("H21:H36")
Set cashflow = Range("N19:AT19")

    For Each cashcell In cashflow
        If IsDate(cashcell.Value) Then
            startweek = cashcell.Value
            endweek = cashcell.Offset(0, 2).Value

                For Each datecell In due

                    If datecell >= startweek And datecell < endweek Then
                        Debug.Print "YES"
                    Else
                        Debug.Print "NO"
                    End If
        End If    ' <-- this If statement starts OUTSIDE the for loop
               Next datecell ' <-- This For loop starts INSIDE the If IsDate...
    Next cashcell

End Sub
Dim到期日期范围
将日期设置为日期
作为范围的单元格
现金流范围变小
暗现金池作为射程
黯淡的startweek作为日期
周末日期
设定到期日=范围(“H21:H36”)
设置现金流=范围(“N19:AT19”)
对于现金流中的每个现金单元
如果是IsDate(cashcell.Value),则
startweek=cashcell.Value
endweek=cashcell.Offset(0,2).Value
对于到期的每个日期单元格
如果datecell>=startweek且datecell结束If'自由匹配
If
For
循环的缩进开始和结束:

Dim due As Range
Dim dueDate As Date
Dim datecell As Range
Dim cashflow As Range
Dim cashcell As Range
Dim startweek As Date
Dim endweek As Date

Set due = Range("H21:H36")
Set cashflow = Range("N19:AT19")

    For Each cashcell In cashflow
        If IsDate(cashcell.Value) Then
            startweek = cashcell.Value
            endweek = cashcell.Offset(0, 2).Value

                For Each datecell In due

                    If datecell >= startweek And datecell < endweek Then
                        Debug.Print "YES"
                    Else
                        Debug.Print "NO"
                    End If
        End If    ' <-- this If statement starts OUTSIDE the for loop
               Next datecell ' <-- This For loop starts INSIDE the If IsDate...
    Next cashcell

End Sub
Dim到期日期范围
将日期设置为日期
作为范围的单元格
现金流范围变小
暗现金池作为射程
黯淡的startweek作为日期
周末日期
设定到期日=范围(“H21:H36”)
设置现金流=范围(“N19:AT19”)
对于现金流中的每个现金单元
如果是IsDate(cashcell.Value),则
startweek=cashcell.Value
endweek=cashcell.Offset(0,2).Value
对于到期的每个日期单元格
如果datecell>=startweek且datecell“如果结束”侧注:检查此项以修复缩进。如果缩进正确,逻辑流程将更容易遵循。您是要检查范围内的每个单元格还是只检查一列?通常,如果您提供错误消息,您将获得HI@Nathan_Sav,是的,我想检查“到期”范围内的每个单元格,看看它们在“现金流”范围内的日期之间。hi@BigBen谢谢你的提示,我想我的缩进可能到处都是!旁注:检查此项以修复缩进。如果缩进正确,逻辑流程将更容易遵循。您是要检查范围内的每个单元格还是只检查一列?通常,如果您提供错误消息,您将获得HI@Nathan_Sav,是的,我想检查“到期”范围内的每个单元格,看看它们在“现金流”范围内的日期之间。hi@BigBen谢谢你的提示,我想我的缩进可能到处都是!