[英]Excel VBA count cells until a date is found
我從.pdf的表中復制了大量數據,將其粘貼到excel后會將其全部放入一列中。 實際上有多個頁面,每個頁面都有自己的表(數據是一個連續的長表,更准確地划分為多個頁面),並且每頁的頂部是我不感興趣的一系列行(相同的不需要的數據是在每個頁面的頂部)。 我感興趣的是對標題下的數據進行重新排序,就像原始.pdf文檔中表格中的數據一樣,在此過程中刪除了標題。 粘貼到一列中的數據本質上是x行的明文項目列表,然后是x行的開始日期列表,然后是x行的結束日期列表,每頁重復一次。
我已經弄清楚了如何通過讓宏從單元格(B2)開始查找我感興趣的第一條數據(“ AAAA”)來計算不需要的行數;
Cells(2, 2).Select
For i = 1 To 50
If ActiveCell = "AAAA" Then
Exit For
End If
ActiveCell.Offset(1, 0).Select
Next i
Cells(2, 3) = i
If i = 51 Then
Range("B3") = "Cannot find data"
End If
它從向下看的單元格(B2)開始搜索,直到找到“ AAAA”,然后打印向下移動了多少行以在單元格(C2)中找到它。
我現在希望能夠從它剛發現的單元格開始[在這種情況下,((B34)],然后向下計數,直到找到包含日期的第一個單元格為止。
最終,我需要倒計數相同數量的單元格以找到關聯的結束日期,並將它們全部打印在一行中,並在整個數據列中繼續打印。
如果有人可以幫助我從第一個單元格“ AAAA”開始,然后遞減計數直到找到一個日期,那真的很有幫助。
下面的代碼從單元格A1
開始,向下搜索,直到找到包含日期值的單元格。 該代碼僅進行搜索,直到到達第一列中的最后一條記錄為止(以避免在未找到日期的情況下一直搜索到表格底部)。
Sub FindFirstDate()
Dim i As Long
For i = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If IsDate(ActiveSheet.Cells(i, 1).Value) = True Then Exit For
Next i
MsgBox "The first cell with a date is " & ActiveSheet.Cells(i, 1).Address
End Sub
在此示例中,在MsgBox
中返回了具有第一個日期的單元格的地址。
我最大的挑戰是了解您想成為什么樣。 我試圖列出您想要的東西。
我將如何做:
For iCounter = 1 to Cells(1048576, 1).End(xlUp).Row
If Cells(iCounter,1) = "YOUR HEADER HERE" then
For kCounter = iCounter to Cells(1048576, 1).End(xlUp).Row
If IsDate(Cells(kCounter,1)) = true then
initialDate = Cells(kCounter,1)
endDate = Cells(2*kCounter-iCounter,1)
End if
Next kCounter
End if
Next iCounter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.