簡體   English   中英

Excel VBA計數單元格直到找到日期

[英]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中返回了具有第一個日期的單元格的地址。

我最大的挑戰是了解您想成為什么樣。 我試圖列出您想要的東西。

  1. 您有一個PDF,當將其粘貼到Excel中時,它將在一列中轉換所有文檔。
  2. 每個要刪除的Excel頁面中都有一個標題。
  3. 找到標題后,您要查找兩個日期,並且它們與標題的距離相同。

我將如何做:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM