我在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;)。
关于我如何做到这一点的任何反馈?如果有更好,更有效的方式来实现我的目标,我会开放它:)
答案 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
是有区别的