2014-02-24 75 views
0

我已經從.pdf中的表格複製了大量的數據,當粘貼到excel中時,它將它們全部放入一列中。實際上有多個頁面,每個頁面都有它自己的表格(數據是一個連續的長表格,更準確地說是分割成多個頁面),在每個頁面的頂部有一系列我不感興趣的行(同樣的不需要的數據是在每頁的頂部)。我感興趣的是重新排列標題下的數據,因爲它位於原始.pdf文檔的表格中,刪除了過程中的標題。已經粘貼到一列中的數據本質上是x行的純文本項目列表,後面是x行的開始日期列表,然後是每行重複x行的結束日期列表。Excel VBA計數單元格直到找到日期

我已經想通過讓宏查找我感興趣的第一部分數據(「AAAA」),從單元格(B2)開始,計算出我不想要的行數。

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」開始,然後向下計數直到找到日期,那將非常有幫助。

回答

0

以下一段代碼從單元格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返回的第一個日期單元的地址。

0

我最大的挑戰是要明白你想成爲真實的。我試圖列出你想要的東西。

  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 
相關問題