【发布时间】:2016-11-15 21:50:45
【问题描述】:
我正在尝试处理数据文件并将每个部分导出到单独的文本文件。我可以指定一个范围以毫无问题地导出(A1:A58),但我不知道我需要多少行,所以它应该是动态的。例如,sheet1 将导出 58 行,因为第 1 行将始终开始范围 (A1) 并且 58 (A58) 包含指示该记录结束的文本“Referring”。然后,这些行将被删除。下一条记录将以特定文本“NewRecord”(A1) 开头,并再次以“Referring”一词结尾。
Sub ExportRange()
Dim c As Range, r As Range
Dim output As String
Dim MyFolder As String
Dim MyFile As String
Dim i As Long
Dim MyOldFile As String
Dim MyNewFile As String
MyFolder = "C:\Users\profile\Documents\test"
MyFile = Dir(MyFolder & "\text.txt")
i = i + 1
MyOldFile = MyFolder & "\" & MyFile
MyNewFile = MyFolder & "\" & Sheets("Sheet1").Range("B20") & "_" & i & ".txt"
For Each r In Range("A1:A37").Rows
For Each c In r.Cells
output = output & "," & c.Value
Next c
output = output & vbNewLine
Next r
Open "C:\Users\profile\Documents\test\Text.txt" For Output As #1
Print #1, output
Close
Name MyOldFile As MyNewFile
MyFile = Dir
Close
End Sub
【问题讨论】:
-
查看“直到”,
do until r.value="Referring"上的range(a1:a10000).end(xlUp)然后r.row将是您的删除点 -
抱歉,我没有将这些行粘贴进去。有一个循环。我没有复制那部分。我需要帮助来确定 For Each r In Range("A1:A37").Rows 行中的范围也许我应该重新考虑我的方法。包括在“Referring”处停止而不是尝试命名范围。
-
Range("A1:A37").Rows将返回范围“A1:A37”,以便遍历其单个单元格Cells仍将返回这些单元格:您真的对仅粘贴列“A”值感兴趣吗?跨度> -
所以您正在寻找包含“Referring”的单元格,在您的示例中是 A37?您希望能够动态地做到这一点?
-
我的例子展示了它现在是如何工作的;但这不是目标。我想将其替换为对最合适范围的引用。即任何包含“引用”的单元格。是的,所有数据都在 A 列中,因为它是从文本文档导入的数据。我正在尝试使用 excel 将数据解析为单个文件。