VBA excelmacros迭代一个表,并select列A行中的行单元格等于某些东西的所有行

我试图迭代一个表,并得到所有行的位置A(列A)的细胞(date单元格)的索引等于某个date,我从另一个单元格获得的date让H1细胞。 点击时,我有一个附加macros的button。 该表有10000多行,有7列(A,B,C,D,E,F,G),A列表示date。 在JavaScript中,它会是这样的东西。

列A中的所有单元格都有日/月/年的值。 整个桌子只有一年。 所以表格从01/01/2017开始,并将于2017年12月31日结束。

 const myDate = worksheet.getCell('H1').Value; const columnA = worksheet.getColumns('A') // here i use pseudocode columnA.forEach((cell, index) => { if (cell.Value == myDate) console.log(index); // instead i can push each index in array so later i could forEach the rows with these indexes and then do some manipulation. }); 

我的任务基本上是把一个datestring放入H1单元格。 当点击button时,必须打印第一个单元格(列A)等于H1单元格的所有行。

编辑:

试过这个到目前为止,我存储和索引的一天开始和结束的地方。 所以我有范围。 现在我怎样才能selectfirstRow和lastRow之间的所有行,并将其打印出来。

 Sub FindMyNubmer() Dim a As Range, b As Range Dim firstRow As Long Dim lastRow As Long Set a = Range("A1:A65000") For Each b In a.Rows If b.Value = Range("H4").Value Then If firstRow = "0" Then firstRow = b.Row End If lastRow = b.Row End If Next MsgBox firstRow & " - " & lastRow End Sub 

尝试AutoFilter; 我使用Sheet1上的单元格H4和H5来显示date范围条件的示例


 Option Explicit Public Sub MarkDates() Dim ws As Worksheet, colA As Range, lc As Long, hdr As Long Set ws = Sheet1 Set colA = ws.UsedRange.Columns(1) lc = ws.UsedRange.Columns.Count + 1 'Today's date in last col Application.ScreenUpdating = False With colA .AutoFilter Field:=1, _ Criteria1:=">=" & CDbl(ws.Range("H4")), _ Operator:=xlAnd, _ Criteria2:="<=" & CDbl(ws.Range("H5")) If .SpecialCells(xlCellTypeVisible).CountLarge > 1 Then hdr = Abs(Not IsDate(.Cells(1))) With ws.UsedRange.Columns(lc) .Offset(hdr).Resize(.Rows.Count - hdr, 1) = Date 'Last used column .NumberFormat = colA.NumberFormat End With End If .AutoFilter End With Application.ScreenUpdating = True End Sub