|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
Sub 桩号分割()
Const ROAD_CODE = 1
Const ROAD_S_POINT = 6
Const ROAD_E_POINT = 7
Const ROAD_LEVEL = 10
Const ROAD_DATA_SHEET = "sheet1"
Const HEADLINE = 4
Const OUTPUT_SHEET = "sheet2"
Dim road_data
Dim output As Range
Set output = Worksheets(OUTPUT_SHEET).[A1]
Dim last_end As Integer
Dim last_level As String
With Worksheets(ROAD_DATA_SHEET)
road_data = .Range(.Cells(HEADLINE + 1, ROAD_CODE), .Cells(HEADLINE, ROAD_LEVEL).End(xlDown))
End With
For i = 1 To UBound(road_data, 1)
temp = s_point
code = road_data(i, ROAD_CODE)
s_point = road_data(i, ROAD_S_POINT)
e_point = road_data(i, ROAD_E_POINT)
level = road_data(i, ROAD_LEVEL)
'If last_end > 0 Then
If s_point = last_end And level = last_level Then
output.Offset(-1, 2) = Int(temp)
s_point = Int(temp)
End If
'End If
Do
If level = "一级" Then
temparr = Array("上行", "下行")
ElseIf level = "二级" Then
temparr = Array("上行")
End If
For Each direc In temparr
output = code
output.Offset(0, 1) = s_point
If s_point + 1 > e_point Then
output.Offset(0, 2) = e_point
Else
output.Offset(0, 2) = s_point + 1
End If
output.Offset(0, 3) = direc
Set output = output.Offset(1, 0)
Next direc
s_point = Int(s_point + 1)
Loop While e_point - s_point >= 0
last_end = e_point
last_level = level
Next i
End Sub
|
评分
-
1
查看全部评分
-
|