根据日期值在一个范围内放置日期

时间:2016-07-13 13:06:05

标签: vba excel-vba excel

我在excel中有一个数据集,可以使用以下例程进行复制:

sub dummy_data

  Sheets("Blad1").Cells(20, 2).FormulaLocal = 2014
  Sheets("Blad1").Cells(21, 2).FormulaLocal = 2014
  Sheets("Blad1").Cells(22, 2).FormulaLocal = 2014
  Sheets("Blad1").Cells(23, 2).FormulaLocal = 2014

  Sheets("Blad1").Cells(20, 3).FormulaLocal = 5
  Sheets("Blad1").Cells(21, 3).FormulaLocal = 6
  Sheets("Blad1").Cells(22, 3).FormulaLocal = 7
  Sheets("Blad1").Cells(23, 3).FormulaLocal = 8

  Sheets("Blad1").Cells(20, 5).FormulaLocal = "27-02-2014"
  Sheets("Blad1").Cells(21, 5).FormulaLocal = "03-03-2014"
  Sheets("Blad1").Cells(22, 5).FormulaLocal = "10-03-2014"
  Sheets("Blad1").Cells(23, 5).FormulaLocal = "17-03-2014"

  Sheets("Blad1").Cells(2, 5).FormulaLocal = "Factuurmomenten"
  Sheets("Blad1").Cells(3, 5).FormulaLocal = "28-02-2014"  
  Sheets("Blad1").Cells(4, 5).FormulaLocal = "12-03-2014"
end sub

我需要编写一个VBA宏,它接受E3:E4范围内的值,并将其置于相关周内。因此,单元格(3,5)中的值应放置在2014年1月27日之后和2014年3月2日之前的单元格F20中。

我写了以下代码:

  Sub test()

    Range("E3").Select
    Set x = Range(Selection, Selection.End(xlDown))

    Range("E20").Select
    Set y = Range(Selection, Selection.End(xlDown))

    For Each cell In x
        For Each cell2 In y

            cell3 = cell2.Offset(1, 0).Value

            If (cell >= cell2) Then
                If (cell <= cell3) Then
                    MsgBox("Jes")
                    End If
                End If

        Next cell2
    Next cell

End Sub

我想我几乎就在那里,但我现在需要一些能够将相关日期放在相关单元格中的东西。因此,它应该放在相关的单元格中,而不是MsgBox(&#34;是&#34;)。

关于我如何做到这一点的任何反馈?如果有更好,更有效的方式来实现我的目标,我会开放它:)

1 个答案:

答案 0 :(得分:0)

这有用吗?

Sub test()

    Range("E3").Select
    Set x = Range(Selection, Selection.End(xlDown))

    Range("E20").Select
    Set y = Range(Selection, Selection.End(xlDown))

    For Each cell In x
        For Each cell2 In y

            If (cell >= cell2) Then
                If (cell <= cell2.Offset(1, 0).Value) Then
                cell2.Offset(0, 1).Value = cell.Value
                    End If
                End If

        Next cell2
    Next cell

End Sub

我不完全理解为什么要遍历单元格,如果只有一个所需的单元格,但是,如果它是用于演示 - 我认为 - 并且你真的需要它在循环中,我就这样修复它。 PS:尝试明确说明你需要什么,问一个function and doing a sub

是有区别的