arrays - Excel 到特定组织格式的文本
问题描述
我正在尝试将海拔 .xyz 文本文件组织成 Visual Modflow 4.2 .VMG 格式,用于地下水建模。海拔的具体格式如下:
(488列,456行,3层)
(第 1 层,第 1 列,从下到上行)(7 个空格)Elevation1(7 个空格)Elevation2....(7 个空格)Elevation10(下一行)(7 个空格)Elevation 11....Elevation20(下一行) ) ... 海拔 456 (第 1 层,第 2 列,从底部到顶部行)
.xyz 文件如下所示:
X 坐标(制表符) YCoord(制表符) Z 坐标 我将它粘贴到前 3 列的活动 Excel 工作表中。它一直持续到大约 300.000 行。
所以它从第一列从上到下遍历所有行。
我需要制作的文件没有指定坐标,它们只是假设从下到上的顺序,并且坐标已经按照所需的顺序设置了。所以它是每行 10 个高程,每行由 7 个空格分隔。
`Private Sub Elevation_VMG()
Dim ElevacionesArray(1 To 488, 1 To 456) As Variant 'array with 3 layers,
488 columns, 456 rows
Dim I As Integer 'counters
Dim J As Integer
Dim S As Integer
Dim C As Integer
Dim H As Integer
Dim MyFile As String
MyFile = Application.DefaultFilePath & "C:\output.txt"
Close #1
Open "MyFile" For Output As #1
C = 2
For I = 1 To 488 '497 columnas
For J = 1 To 456 '464 filas
ElevacionesArray(I, J) =
ActiveWorkbook.Worksheets("Hoja1").Cells(3, C).Value
C = C + 1
Next J
Next I
For I = 1 To 488
C = 1
For J = 1 To 456
If C >= 10 Then
Write #1, vbNewLine
C = 1
'Array to textfile
Write #1, " " + ElevacionesArray(I, J)
C = C + 1
Next J
Next I
Close #1
End Sub`
我还是 VBA for excel 的新手,所以我认为这是我做错了一些格式,现在我收到 1004 错误。
解决方案
我已经清理了您代码中的明显错误,并评论了我所做的更改以帮助您理解:
Private Sub Elevation_VMG()
Dim ElevacionesArray(1 To 488, 1 To 456) As Variant 'array with 3 layers,488 columns, 456 rows
Dim I As Integer 'counters
Dim J As Integer
Dim S As Integer
Dim C As Long ' 488*456 requires a Long to hold a number of that size
Dim H As Integer
Dim MyFile As String
MyFile = Application.DefaultFilePath & "\output.txt" ' Removed reference to C drive
Close #1
Open MyFile For Output As #1 ' Removed quotes
C = 2
For I = 1 To 488 '497 columnas
For J = 1 To 456 '464 filas
ElevacionesArray(I, J) = ActiveWorkbook.Worksheets("Hoja1").Cells(C, 3).Value ' swapped (3, C) row/columns here
C = C + 1
Next J
Next I
For I = 1 To 488
C = 1
For J = 1 To 456
If C >= 10 Then
Write #1, vbNewLine
C = 1
End If
'Array to textfile
Write #1, " " + ElevacionesArray(I, J)
C = C + 1
Next J
Next I
Close #1
End Sub
推荐阅读
- java - org.gradle.internal.resource.transport.http.HttpRequestException:无法 HEAD '
- c++ - 我们如何知道任何类型的理论上可能的对象的最大尺寸?
- javascript - Firebase 表 - javascript
- ios - 为什么SpriteKit在碰撞发生一次时检测到双重碰撞
- sql - 如何从查询结果创建新表?
- html - 虚拟主机不更新 HTML 代码
- reactjs - Redux Saga - 如何在登录后调用多个操作
- python - Flask 应用程序中的全局变量/函数
- angular - 离子构建后离子构建卡住了——大型项目中的产品
- html - 如何使 submit_tag 始终启用?