Excel 对于单独范围内的循环

Excel 对于单独范围内的循环,excel,vba,Excel,Vba,我期待着从一个PDF文件转换成excel中的信息流生成一个数据库。在这里提供了一些帮助之后,需要搜索的各个范围已经被定义,现在我正试图在这些范围内扫描特定的触发器。这样做的目的是根据数据中存在哪些触发器来提取数据 我目前正在尝试创建一个For循环来扫描所有不同的范围,并提取所需的信息,但我认为For循环会失败 我的数据采用以下格式,在excel中总共约900行 Biodiesel Loss Number: 88840 Three people were killed and five

我期待着从一个PDF文件转换成excel中的信息流生成一个数据库。在这里提供了一些帮助之后,需要搜索的各个范围已经被定义,现在我正试图在这些范围内扫描特定的触发器。这样做的目的是根据数据中存在哪些触发器来提取数据

我目前正在尝试创建一个For循环来扫描所有不同的范围,并提取所需的信息,但我认为For循环会失败

我的数据采用以下格式,在excel中总共约900行

Biodiesel  
Loss Number:  
88840  
Three people were killed and five injured in a fire that broke out in a biodiesel plant. People living eight km away reported hearing an explosion. A building collapsed on the victims of the incident.  
Event Date:  
22/11/2008  
Country:  
Turkey  
Location:  
Antakya, southern province of Hatay  
Event:  
Explosion, fire  
Cause:  
Explosion  
Plant Status:  
Operating  
Fatalities:  
3  
Injuries:    
5
问题是数据的格式不一样,所以我想根据损失数将数据分成几个范围:然后扫描每个范围,查找大约10个可能的标题。但是,我不确定如何扫描各个范围

任何帮助都将不胜感激

我现在的代码是

Sub RangePrintTest()


Dim pd(100000, 100)
Dim rpd(10000, 100)
Dim VirtMat(300, 100)
Dim c As Integer
Dim npd As Variant


With ThisWorkbook.Sheets("PDF Input Sheet")


Dim Rng As Range
Dim Dn As Range
Dim Temp As String
Dim k
Dim cc As Long


Set Rng = Range(Range("A2"), Range("A" & Rows.count).End(xlUp))
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare

For Each Dn In Rng
If Not .Exists(Dn.Value & Dn.Offset(1).Value) And Dn.Value = "Loss Number:" Then
.Add Dn.Value & Dn.Offset(1).Value, Dn
Temp = Dn.Value & Dn.Offset(1).Value
Else
Set .Item(Temp) = Union(.Item(Temp), Dn)
End If
Next

Dim p
For Each k In .keys
    cc = cc + 1
    VirtMat(cc, 1) = .Item(k).Address
Next k
End With


End With


Dim i As Integer
i = 1

For i = 1 To 41
X = VirtMat(i, 1).Value
i = i + 1
Set TestRange = Range(X)
Do Until R = 21
If TestRange(R, 1) = "Loss Number:" Then
If TestRange(R + 1, 1) <> "" Then LossNumber = TestRange(R + 1, 1)

If TestRange(R, 1) <> "Loss Number:" Then LossNumber = NoInfo

cr = cr + 1

rpd(cr, 1) = LossNumber


End If

R = R + 1

Loop
Next

End Sub
你有:

For i = 1 To 41
X = VirtMat(i, 1).Value
i = i + 1

// other stuff

Next
这是给。。。下一个循环在每次运行循环后自动递增循环变量(在本例中为i)。您还在代码中手动递增i,因此将丢失VirtMat中的一半条目。您将阅读条目1、遗漏条目2、读取条目3,依此类推


尝试删除i=i+1行,看看是否有帮助。更多关于。。。下一个循环是

也许你可以描述一下实际的问题是什么,并生成一个最小的SSCCE?我希望这篇编辑可能已经澄清了一点。