我需要编写一个宏来读取GeoTechnical数据的工作表,根据特定行中的值选择数据,选择该行并继续读取直到工作表结束 . 选择所有行后,我需要将这些行复制到新的工作表中 . 我在大约10年内没有做过VBA,所以只是想回到原点 .
例如,我希望宏读取工作表,当列“I”在特定行上包含单词“Run”时,我想从该行中选择A:AM . 继续阅读工作表,直到它结束 . 文档的结尾很棘手,因为工作表中的数据组之间有时会有多达10-15个空白行 . 如果有超过25个空白行,那么文档将在最后 . 选择完所有内容后,我需要将粘贴选项复制到新工作表中 . 这是我到目前为止的代码,但我无法得到一个选择:
Option Explicit
Sub GeoTechDB()
Dim x As String
Dim BlankCount As Integer
' Select first line of data.
Range("I2").Select
' Set search variable value and counter.
x = "Run"
BlankCount = 0
' Set Do loop to read cell value, increment or reset counter and stop loop at end 'document when there
' is more then 25 blank cells in column "I", copy final selection
Do Until BlankCount > 25
' Check active cell for search value "Run".
If ActiveCell.Value = x Then
'select the range of data when "Run" is found
ActiveCell.Range("A:AM").Select
'set counter to 0
BlankCount = 0
'Step down 1 row from present location
ActiveCell.Offset(1, 0).Select
Else
'Step down 1 row from present location
ActiveCell.Offset(1, 0).Select
'if cell is empty then increment the counter
BlankCount = BlankCount + 1
End If
Loop
End Sub
3 回答
我看到你的代码出了什么问题 . 如果我理解了你想要的东西,这段代码应该提供它:
它开始从I2迭代I列,直到找到单词“Run” . 此时,它开始计数单元格直到达到25(当循环退出时,选择相应的范围,如最后一行和“运行”中的那一行所定义) . 你在谈论空白单元格,但你的代码没有检查,我也不知道如果找到一个非空单元格(重新启动计数器?)该怎么办 . 请详细说明 .
我喜欢短代码:
现在你只需要将它粘贴到一个新的工作表中,也可以自动化......