Excel lls(第16行,k,1))=真或中(单元格(第16行,k,1)=“那么 GetDiam=GetDiam和Mid(单元格(第16行),k,1) 如果结束 下一个k GetDiam_Val=Val(GetDiam) 直径2ft=GetDiam_Val/12 ActiveSheet.Cells(行+1,39).Value=GetElev-Diam2Ft 其他的 ActiveSheet.Cells(第1行,第39行).Value=ActiveSheet.Cells(第4行).Value 如果结束 如果结束 下一排 '--------------------------------------------------------------------------------------- “准备工作表重新组织,必须是下一步,以便从之前的流程中获得更改的数据 对于行=1到ActiveSheet.UsedRange.Rows.Count 如果IsEmpty(ActiveSheet.Cells(行,1.Value)=True,则 退出 如果结束 ”“是的 ActiveSheet.Cells(行+1,44).Value=ActiveSheet.Cells(行,1.Value) “描述 ActiveSheet.Cells(行+1,40).Value=ActiveSheet.Cells(行,5).Value '轮辋高度 如果ActiveSheet.Cells(第5行)值为“排水口”或ActiveSheet.Cells(第5行)。值为“沟渠”,则 ActiveSheet.Cells(行+1,41).Value=ActiveSheet.Cells(行,4).Value 如果结束 'X位置 ActiveSheet.Cells(第1行,第42行)。Value=ActiveSheet.Cells(第3行)。Value “Y位置 ActiveSheet.Cells(行+1,43).Value=ActiveSheet.Cells(行,2).Value 下一排 '--------------------------------------------------------------------------------------- '重新组织工作表 对于行=1到ActiveSheet.UsedRange.Rows.Count+1 如果IsEmpty(ActiveSheet.Cells(行,1.Value)=True,则 如果IsEmpty(ActiveSheet.Cells(第44行).Value)=True,则 退出 如果结束 ElseIf CountIt=1,则 ActiveSheet.Cells(第1行)。Value=“ID” ActiveSheet.Cells(第2行)。Value=“DESC.” ActiveSheet.Cells(第3行)。Value=“RIM ELEV。” ActiveSheet.Cells(第4行)。Value=“YR\u INST” ActiveSheet.Cells(第5行)。Value=“YR\u RETIRE” ActiveSheet.Cells(第6行)。Value=“区域” ActiveSheet.Cells(第7行)。Value=“阶段” ActiveSheet.Cells(第8行)。Value=“存货标高。” ActiveSheet.Cells(第9行)。Value=“DEPTH\u RIM” ActiveSheet.Cells(第10行)。Value=“INIT\u DPTH” ActiveSheet.Cells(第11行)。Value=“SURG\u DPTH” ActiveSheet.Cells(第12行)。Value=“池塘面积” ActiveSheet.Cells(第13行)。Value=“FLOOD\u TYP” ActiveSheet.Cells(第14行)。Value=“SD\u COEFF” ActiveSheet.Cells(第15行)。Value=“已选定” ActiveSheet.Cells(第16行)。Value=“符号” ActiveSheet.Cells(第17行)。Value=“SYMSIZE” ActiveSheet.Cells(第18行)。Value=“X” ActiveSheet.Cells(第19行)。Value=“Y” ActiveSheet.Cells(第20行)。Value=“Z” ActiveSheet.Cells(第21行).Value=“SD\U网格” CountIt=CountIt+1 其他的 ActiveSheet.Cells(第1行).Value=ActiveSheet.Cells(第44行).Value ActiveSheet.Cells(第2行).Value=ActiveSheet.Cells(第40行).Value ActiveSheet.Cells(第3行).Value=ActiveSheet.Cells(第41行).Value ActiveSheet.Cells(第4行)。Value=“” ActiveSheet.Cells(第5行)。Value=“” ActiveSheet.Cells(第6行)。Value=“” ActiveSheet.Cells(第7行)。Value=“” ActiveSheet.Cells(第8行).Value=ActiveSheet.Cells(第39行).Value ActiveSheet.Cells(第9行)。Value=“” ActiveSheet.Cells(第10行)。Value=“” ActiveSheet.Cells(第11行)。Value=“” ActiveSheet.Cells(第12行)。Value=“” ActiveSheet.Cells(第13行)。Value=“” ActiveSheet.Cells(第14行)。Value=“” ActiveSheet.Cells(第15行)。Value=“” ActiveSheet.Cells(第16行)。Value=“” ActiveSheet.Cells(第17行)。Value=“” ActiveSheet.Cells(第18行).Value=ActiveSheet.Cells(第42行).Value ActiveSheet.Cells(第19行).Value=ActiveSheet.Cells(第43行).Value ActiveSheet.Cells(第20行).Value=ActiveSheet.Cells(第41行).Value ActiveSheet.Cells(第21行)。Value=“” 对于CountTheme=22到44 ActiveSheet.Cells(行,计数)。Value=“” 接下来数一数 如果结束 下一排 '--------------------------------------------------------------------------------------- '将转换后的文件另存为.CSV MsgBox“为.CSV文件选择所需的保存位置。” Dim InitialName作为字符串 变暗路径名作为变量 将ws设置为工作表 设置ws=ThisWorkbook.Worksheets(“Sheet1”) InitialName=“sfm\U输出” 路径名=应用程序.GetSaveAsFilename(初始文件名:=初始名称,文件筛选器:=“CSV(逗号分隔)(*.CSV),*.CSV”) ws.Copy ActiveWorkbook.SaveAs文件名:=路径名_ FileFormat:=xlCSV,CreateBackup:=False MsgBox“进程成功完成”。&vbNewLine&“文件保存到:”&vbNewLine&PathName '--------------------------------------------------------------------------------------- '关闭所有工作簿 Application.DisplayAlerts=False 申请,退出 端接头
所讨论的部分是“准备工作表重新组织”部分或“重新组织工作表”部分(或两者兼而有之)。很抱歉,目前的代码是草率的,我只是想让它在第一时间工作,然后再通过和清理它 非常感谢您的帮助 编辑:不确定代码段中的缩进发生了什么Excel lls(第16行,k,1))=真或中(单元格(第16行,k,1)=“那么 GetDiam=GetDiam和Mid(单元格(第16行),k,1) 如果结束 下一个k GetDiam_Val=Val(GetDiam) 直径2ft=GetDiam_Val/12 ActiveSheet.Cells(行+1,39).Value=GetElev-Diam2Ft 其他的 ActiveSheet.Cells(第1行,第39行).Value=ActiveSheet.Cells(第4行).Value 如果结束 如果结束 下一排 '--------------------------------------------------------------------------------------- “准备工作表重新组织,必须是下一步,以便从之前的流程中获得更改的数据 对于行=1到ActiveSheet.UsedRange.Rows.Count 如果IsEmpty(ActiveSheet.Cells(行,1.Value)=True,则 退出 如果结束 ”“是的 ActiveSheet.Cells(行+1,44).Value=ActiveSheet.Cells(行,1.Value) “描述 ActiveSheet.Cells(行+1,40).Value=ActiveSheet.Cells(行,5).Value '轮辋高度 如果ActiveSheet.Cells(第5行)值为“排水口”或ActiveSheet.Cells(第5行)。值为“沟渠”,则 ActiveSheet.Cells(行+1,41).Value=ActiveSheet.Cells(行,4).Value 如果结束 'X位置 ActiveSheet.Cells(第1行,第42行)。Value=ActiveSheet.Cells(第3行)。Value “Y位置 ActiveSheet.Cells(行+1,43).Value=ActiveSheet.Cells(行,2).Value 下一排 '--------------------------------------------------------------------------------------- '重新组织工作表 对于行=1到ActiveSheet.UsedRange.Rows.Count+1 如果IsEmpty(ActiveSheet.Cells(行,1.Value)=True,则 如果IsEmpty(ActiveSheet.Cells(第44行).Value)=True,则 退出 如果结束 ElseIf CountIt=1,则 ActiveSheet.Cells(第1行)。Value=“ID” ActiveSheet.Cells(第2行)。Value=“DESC.” ActiveSheet.Cells(第3行)。Value=“RIM ELEV。” ActiveSheet.Cells(第4行)。Value=“YR\u INST” ActiveSheet.Cells(第5行)。Value=“YR\u RETIRE” ActiveSheet.Cells(第6行)。Value=“区域” ActiveSheet.Cells(第7行)。Value=“阶段” ActiveSheet.Cells(第8行)。Value=“存货标高。” ActiveSheet.Cells(第9行)。Value=“DEPTH\u RIM” ActiveSheet.Cells(第10行)。Value=“INIT\u DPTH” ActiveSheet.Cells(第11行)。Value=“SURG\u DPTH” ActiveSheet.Cells(第12行)。Value=“池塘面积” ActiveSheet.Cells(第13行)。Value=“FLOOD\u TYP” ActiveSheet.Cells(第14行)。Value=“SD\u COEFF” ActiveSheet.Cells(第15行)。Value=“已选定” ActiveSheet.Cells(第16行)。Value=“符号” ActiveSheet.Cells(第17行)。Value=“SYMSIZE” ActiveSheet.Cells(第18行)。Value=“X” ActiveSheet.Cells(第19行)。Value=“Y” ActiveSheet.Cells(第20行)。Value=“Z” ActiveSheet.Cells(第21行).Value=“SD\U网格” CountIt=CountIt+1 其他的 ActiveSheet.Cells(第1行).Value=ActiveSheet.Cells(第44行).Value ActiveSheet.Cells(第2行).Value=ActiveSheet.Cells(第40行).Value ActiveSheet.Cells(第3行).Value=ActiveSheet.Cells(第41行).Value ActiveSheet.Cells(第4行)。Value=“” ActiveSheet.Cells(第5行)。Value=“” ActiveSheet.Cells(第6行)。Value=“” ActiveSheet.Cells(第7行)。Value=“” ActiveSheet.Cells(第8行).Value=ActiveSheet.Cells(第39行).Value ActiveSheet.Cells(第9行)。Value=“” ActiveSheet.Cells(第10行)。Value=“” ActiveSheet.Cells(第11行)。Value=“” ActiveSheet.Cells(第12行)。Value=“” ActiveSheet.Cells(第13行)。Value=“” ActiveSheet.Cells(第14行)。Value=“” ActiveSheet.Cells(第15行)。Value=“” ActiveSheet.Cells(第16行)。Value=“” ActiveSheet.Cells(第17行)。Value=“” ActiveSheet.Cells(第18行).Value=ActiveSheet.Cells(第42行).Value ActiveSheet.Cells(第19行).Value=ActiveSheet.Cells(第43行).Value ActiveSheet.Cells(第20行).Value=ActiveSheet.Cells(第41行).Value ActiveSheet.Cells(第21行)。Value=“” 对于CountTheme=22到44 ActiveSheet.Cells(行,计数)。Value=“” 接下来数一数 如果结束 下一排 '--------------------------------------------------------------------------------------- '将转换后的文件另存为.CSV MsgBox“为.CSV文件选择所需的保存位置。” Dim InitialName作为字符串 变暗路径名作为变量 将ws设置为工作表 设置ws=ThisWorkbook.Worksheets(“Sheet1”) InitialName=“sfm\U输出” 路径名=应用程序.GetSaveAsFilename(初始文件名:=初始名称,文件筛选器:=“CSV(逗号分隔)(*.CSV),*.CSV”) ws.Copy ActiveWorkbook.SaveAs文件名:=路径名_ FileFormat:=xlCSV,CreateBackup:=False MsgBox“进程成功完成”。&vbNewLine&“文件保存到:”&vbNewLine&PathName '--------------------------------------------------------------------------------------- '关闭所有工作簿 Application.DisplayAlerts=False 申请,退出 端接头,excel,vba,Excel,Vba,所讨论的部分是“准备工作表重新组织”部分或“重新组织工作表”部分(或两者兼而有之)。很抱歉,目前的代码是草率的,我只是想让它在第一时间工作,然后再通过和清理它 非常感谢您的帮助 编辑:不确定代码段中的缩进发生了什么 Edit2:下面是.xlsm文件和示例input.txt文件的示例。谢谢您的输入数据。请加上 'at very top Option Explicit 'after Dim answer As Integer Application.Visible = True Stop 'in
Edit2:下面是.xlsm文件和示例input.txt文件的示例。谢谢您的输入数据。请加上
'at very top
Option Explicit
'after Dim answer As Integer
Application.Visible = True
Stop
'in data conversion
Dim StringLength As Long, Str_Length As Long, kLen As Long
'please note
'rows 14 & 15 are not SD, WQ, SDCS, but fall thru to OUTFALL,
'but neither are TOP/PIPE because column tested s/b 19 (not 18)
'real problem is in Reorg
If IsEmpty(ActiveSheet.Cells(row, 1).Value) = True Then
If IsEmpty(ActiveSheet.Cells(row, 44).Value) = True Then
Exit For
End If
col-A col-AM etc...
1
2 1641.11 SD 1644.01 4302311.81 216897.65 1
3 1641.63 SD 1644.53 4302261.52 216898 2
4 1648.61 SD 1651.26 4302009.62 216670.98 3
5 1648.99 SD 1652.39 4301918.39 216673.01 4
6 1649.51 SD 1654.41 4301857.91 216626.07 5
7 1651.74 SD 1654.64 4301628.69 216756.85 6
8 1662.07 SD 1665.12 4301234.27 216561.5 7
9 1661.76 SD 1665.02 4301232.65 216482.29 8
10 1661.14 SD 1664.94 4301271.11 216498.17 9
11 1669.14 SD 1669.29 4301040.07 216960.04 10
12 1656.85 SD 1661.1 4302020.09 216349.68 11
13 1658.6 SD 1660.64 4302036.86 216345.72 12
14 Unable..WQ 1656.83 4302020.95 216368.26 13
15 1647 OUTFALL 1647 4302151.24 216561.44 14
1648.76 OUTFALL 1648.76 4302059.74 216518.98 15
第16行的Col=1为空,退出时间过快。我们不知道输入数据是什么样的,因此无法重现这种情况。
'at very top
Option Explicit
'after Dim answer As Integer
Application.Visible = True
Stop
'in data conversion
Dim StringLength As Long, Str_Length As Long, kLen As Long
'please note
'rows 14 & 15 are not SD, WQ, SDCS, but fall thru to OUTFALL,
'but neither are TOP/PIPE because column tested s/b 19 (not 18)
'real problem is in Reorg
If IsEmpty(ActiveSheet.Cells(row, 1).Value) = True Then
If IsEmpty(ActiveSheet.Cells(row, 44).Value) = True Then
Exit For
End If
col-A col-AM etc...
1
2 1641.11 SD 1644.01 4302311.81 216897.65 1
3 1641.63 SD 1644.53 4302261.52 216898 2
4 1648.61 SD 1651.26 4302009.62 216670.98 3
5 1648.99 SD 1652.39 4301918.39 216673.01 4
6 1649.51 SD 1654.41 4301857.91 216626.07 5
7 1651.74 SD 1654.64 4301628.69 216756.85 6
8 1662.07 SD 1665.12 4301234.27 216561.5 7
9 1661.76 SD 1665.02 4301232.65 216482.29 8
10 1661.14 SD 1664.94 4301271.11 216498.17 9
11 1669.14 SD 1669.29 4301040.07 216960.04 10
12 1656.85 SD 1661.1 4302020.09 216349.68 11
13 1658.6 SD 1660.64 4302036.86 216345.72 12
14 Unable..WQ 1656.83 4302020.95 216368.26 13
15 1647 OUTFALL 1647 4302151.24 216561.44 14
1648.76 OUTFALL 1648.76 4302059.74 216518.98 15