Excel表格制作标高计算程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel表格制作标高计算程序

新建一个Excel文件,把Sheet1表重命名为“竖曲线”,把Sheet2表重命名为“设计标高”。

(1)在竖曲线表中的A1-E1(合并)单元格输入线路名称,在A2-E2单元格中分别输入“变坡点编号”、“变坡点里程”、“变坡点标高”、“曲线半径”和“切线长”,从第三行开始输入对应数据,

(2)打开VB编辑器(Alt+F11),双击工程资源管理器中“设计标高”表图标,复制以下程序到界面上,保存后返回Excel窗口,在“设计标高”表中的第一列,从第二行开始输入要计算的里程桩号,完成后,在任一单元格中双击单元格,即可看见输入结果(在第二列),本程序默认遇到桩号列空单元格时不再向下计算。

Dim K As Double

Dim H As Double

Dim P1 As Double, P2 As Double, P3 As Double

Dim H1 As Double, H2 As Double

Dim R1 As Double, R2 As Double

Dim T1 As Double, T2 As Double

Dim D1 As Double, D2 As Double

Dim G1 As Long, G2 As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) On Error Resume Next

Dim i As Long

Dim hang As Long

Dim cell

n = 0

For Each cell In Sheets("竖曲线").Range("a3:a65536")

If cell.Value <> "" Then

n = n + 1

Else

Exit For

End If

Next

i = 2

flag:

P2 = 0

P3 = 0

hang = 3

If Sheets("设计标高").Cells(i, 1) <> "" Then

K = Val(Cells(i, 1))

canshu:

P1 = P2

D1 = Val(Sheets("竖曲线").Cells(hang + 1, 2))

D2 = Val(Sheets("竖曲线").Cells(hang + 2, 2))

H1 = Val(Sheets("竖曲线").Cells(hang + 1, 3))

H2 = Val(Sheets("竖曲线").Cells(hang + 2, 3))

P3 = (H2 - H1) / (D2 - D1)

D1 = Val(Sheets("竖曲线").Cells(hang, 2))

D2 = Val(Sheets("竖曲线").Cells(hang + 1, 2))

H1 = Val(Sheets("竖曲线").Cells(hang, 3))

H2 = Val(Sheets("竖曲线").Cells(hang + 1, 3))

R1 = Val(Sheets("竖曲线").Cells(hang, 4))

R2 = Val(Sheets("竖曲线").Cells(hang + 1, 4))

T1 = Val(Sheets("竖曲线").Cells(hang, 5))

T2 = Val(Sheets("竖曲线").Cells(hang + 1, 5))

P2 = (H2 - H1) / (D2 - D1)

If K < D1 Then Sheets("设计标高").Cells(i, 3) = "超出": i = i + 1: GoTo flag If K > D2 And hang < n + 3 Then

hang = hang + 1

GoTo canshu

Else

Call biaogao

Sheets("设计标高").Cells(i, 2) = Round(H, 3)

End If

Else

End

End If

i = i + 1

GoTo flag

End Sub

Function biaogao() As Double

On Error Resume Next

G1 = -1

If P2 - P1 > 0 Then G1 = 1

G2 = -1

If P3 - P2 > 0 Then G2 = 1

H = 0

If K < D1 + T1 Then

H = H1 + (K - D1) * P2 + G1 * (D1 + T1 - K) ^ 2 / (2 * R1)

ElseIf K <= D2 - T2 Then

H = H1 + (K - D1) * P2

Else

If R2 <> 0 Then

H = H2 - (D2 - K) * P2 + G2 * (K - (D2 - T2)) ^ 2 / (2 * R2)

Else

H = H2 - (D2 - K) * P2

End If

End If

End Function

本程序只计算单一线路的中桩标高,若想把多个线路的参数放在同一个表中时,只需对以上程序稍加改动即可。

相关文档
最新文档