我从.pdf中的表中复制了大量数据,当粘贴到excel中时,将其全部放入一列。实际上有多个页面,每个页面都有自己的表格(数据是一个连续的长表格,更准确地分割在多个页面上),每页的顶部是一系列我不感兴趣的行(相同的不需要的数据是在每页的顶部)。我感兴趣的是在原始.pdf文档的表格中重新排序标题下的数据,删除过程中的标题。粘贴到一列中的数据本质上是x行的纯文本项列表,后面是x行的开始日期列表,然后是每行重复的x行的结束日期列表。 / p>
我已经想出如何通过从单元格(B2)开始寻找我感兴趣的第一段数据(“AAAA”)来计算我不想要的行数; < / p>
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 :(得分: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
中返回第一个日期的单元格的地址。
答案 1 :(得分:0)
我最大的挑战是了解你想成为什么样的人。我试着列出你想要的东西。
我该怎么做:
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