在VBA中选择单元格范围

时间:2017-01-16 07:09:28

标签: vba excel-vba cell excel

在我的电子表格的1行内,日期为2017年1月1日至2017年12月31日(第2行)。 第3行包含2017年每天的价值。

单元格A1和B1包含日期,根据该日期选择第2行 - 因此,如果A1是1/1/2017,B1是31/3/2017,则只有这些月份应显示在从中绘制的图表中下面的第2行和第3行(第2行是x,第3行是y值)。

我想过匹配或if语句。有没有人知道如何在VBA中实现这一目标

1 个答案:

答案 0 :(得分:-1)

如果我理解正确,A1是开始日,B1是您要选择的范围的结束日,第2行是2017年的所有日子,从A2开始直到结束年。第3行是与第2行中每一天相关联的值。然后,要获得所需的范围,可以使用以下内容:

Dim startIdx As Integer, endIdx As Integer
Set valRng = ActiveSheet.Range("A2:NB2")

startIdx = Application.Match(CLng(Cells(1, 1).Value), valRng, 0)
endIdx = Application.Match(CLng(Cells(1, 2).Value), valRng, 0)

Set rngSel = ActiveSheet.Range(Cells(2, 1).Offset(0, startIdx-1), Cells(2, 1).Offset(0, endIdx-1))
MsgBox ("rngSel=" & rngSel.Cells.Address)

使匹配语句中的值转换有效的活动成分是“CLng”调用根据此page获取日期的日期部分。