我在第1行有这样的日期(mm / yy)
A B C D E F
1/19 2/19 3/19 4/19 5/19 6/19 ...
我希望VBA能够识别今天的日期并将其与当前列匹配并返回为整数。
忽略日期(仅匹配月份和年份)。
例如,如果今天是 4/13/2019 ,它将是 4 (D列)
我将在VBA中使用它,因为我将使用它来定义范围:
For today To x month
答案 0 :(得分:-1)
OP似乎正在寻找VBA解决方案,因此这是替代方案。
我可以想到在VBA中完成此操作的几种完全不同的方法。您的问题不是很清楚您想要的最终结果是什么,但是似乎您正在寻找一个返回列号的函数-也许这样您就可以用来查明范围。
Function DateCol(ByVal InputDate As Date) As Long
Dim colDate As Date
colDate = InputDate - Day(InputDate) + 1
Dim srcRng As Range
Set srcRng = ThisWorkbook.Worksheets("Sheet1").Rows(1)
DateCol = srcRng.Find(What:=colDate, LookAt:=xlWhole).Column
End Function
您只需输入一个输入日期,减去日期(然后加上1,因为该月的第一天不是0
)。然后,您使用这个新日期并使用.Find()
方法在工作表上查找包含日期的范围,最后使用.Column
属性获取您要查找的数字。
这里是一个小样本用法:
Sub test()
' Example Usage
Cells(10, DateCol(#6/11/2019#)).Value = "Test"
End Sub
在上面的测试子目录中,DateCol()
函数将在示例工作表中返回6
的值,从而得出结果:
Cells(10, 6).Value = "Test"
唯一的问题是此函数不包含任何错误处理。如果在.Find()
中找不到日期,则会引发错误,因此请确保考虑到这一点。
此外,不要忘记更改此行以使用真实的工作表:
ThisWorkbook.Worksheets("Sheet1").Rows(1)
答案 1 :(得分:-2)