我在excel电子表格中有两列。 '距离'和'承载'。如下图所示,第一个距离值为 58.23 ,第一个距离的方位值为 -43.45 ,如图1所示。
我想将距离分成一个米,如1,2,3,4 ... 58(因此58米被分成58个相等的部分)在一列(距离1)并填写下一列值为-43.45(Bearing1)从1到58,如图2所示。我想在新的表格中生成它。
在第一行之后,代码应该转到下一个距离行(即20.70)并重复步骤1,但应将其添加到之前的1到58个单元格中。即58,59,60并用 -42.48 填充bearing1列值,依此类推。如图3所示。
我是VBA的新手,如果有人可以帮助我,我会非常乐于助人:)
答案 0 :(得分:0)
一些行计数器和单一类型变量以及一些循环都可以。
由于您不熟悉VBA,因此不会考虑性能优化。希望下面未经测试的代码会让你喜欢做VBA编程。代码应该自我解释目的。询问是否不理解。
这里假设数据按照屏幕截图列在A列和B列上。输出数据将来自D2和E2。
Option Explicit
Sub FillDistanceBearing()
Dim lRowOutput As Long ' Row to start storing data
Dim lDistance As Long ' Incremental Distance
Dim lLoop1 As Long, lLoop2 As Long ' Row counters for Loops
Dim gDistance As Single, gBearing As Single ' Variables to store the points
lRowOutput = 2 ' Row to start storing the series at some column
lDistance = 0 ' Start from zero
' #1 - Loop the main data
lLoop1 = 2 ' For A2
Do Until IsEmpty(Range(lLoop1, "A"))
' Store the Distance|Bearing values into variables
gDistance = Range(lLoop1, "A").Value
gBearing = Range(lLoop1, "B").Value
' #2 - Loop the distance from 1 to the integer value of the distance
For lLoop2 = 1 To Int(gDistance)
lDistance = lDistance + 1 ' Increment distance
' Store the values in Columns D and E for Distance1, Bearing1
Range(lRowOutput, "D").Value = lDistance
Range(lRowOutput, "E").Value = gBearing
lRowOutput = lRowOutput + 1 ' Move to next row for storing output
Next
lLoop1 = lLoop1 + 1 ' Move to next data row
Loop
End Sub