在列中查找多个单元格,从相邻列中选择单元格并分别为每个单元格调用模块

时间:2016-12-16 13:26:24

标签: vba excel-vba excel

我陷入了一个相当尴尬的境地: 假设我有一个从2015年到2017年连续几天的专栏,D栏。

首先,我想找到该列中包含该月第一天的每个单元格。

其次我想为我找到的每个单元格选择同一行和2列之外的单元格(F列)。

第三,我想分别为每个单元调用一个模块(因为我开发的模块依赖于ActiveCell选择)。

最后是否可以获取与该月第一天相对应的每个单元格(在其上调用模块的单元格)并将其自动填充到包含该月最后一天的行?

Date         Week  Total Companytotal
23-03-15    29-mar  224 45
24-03-15    29-mar  251 37
25-03-15    29-mar  365 77
26-03-15    29-mar  404 147
27-03-15    29-mar  394 132
28-03-15    29-mar  514 123
29-03-15    29-mar  538 132
30-03-15    5-apr   472 122
31-03-15    5-apr   551 152
01-04-15    5-apr   730 163
02-04-15    5-apr   604 112
03-04-15    5-apr   511 129
04-04-15    5-apr   336 84
05-04-15    5-apr   298 98
06-04-15    12-apr  517 144
07-04-15    12-apr  507 121
08-04-15    12-apr  647 165
09-04-15    12-apr  646 181
10-04-15    12-apr  745 189
11-04-15    12-apr  643 168
12-04-15    12-apr  699 174
13-04-15    19-apr  698 174
14-04-15    19-apr  759 160
15-04-15    19-apr  937 221
16-04-15    19-apr  1013    204
17-04-15    19-apr  1263    274
18-04-15    19-apr  1055    306
19-04-15    19-apr  1173    287
20-04-15    26-apr  909 209

这是该表的一个片段(它一直到2017年)。我要称之为模块的单元格是Total,如果可能的话,还是Companytotal。

谢谢。

2 个答案:

答案 0 :(得分:0)

遍历所有行。在循环中,检查日期是否是一个月的第一天。如果是,请选择它并激活宏(它将成为活动单元格)。当执行宏时,循环继续并对剩余的单元格执行相同的操作。

另外,尽量不要使用ActiveCell,Select等编写宏。它会让你的生活更轻松:)

答案 1 :(得分:0)

这是第3步的答案:

Sub tets()

i = 2
Do While Sheets("Sheet1").Range("D" & i).Value <> ""
    If Day(Sheets("Sheet1").Range("D" & i).Value) = 1 Then
       Range("F" & i).Select
       SomeMacro

    End If

    i = i + 1
Loop

End Sub

关于你的上一个问题:有可能,但我不明白,你要填写哪些栏目以及范围是什么(从第一天到最后一天,我是对的?)