2016-04-29 4 views
0

Excelのスプレッドシートに2つの列があります。 「距離」と「ベアリング」。下の画像に示すように、第1距離値は、58.23であり、画像1VBA Excel - 別のセルの値に基づいて、自動的にシリーズをExcelで塗りつぶすことはできますか?

Image 1

に示すように、第1距離用軸受値が-43.45ある私はに距離を分割します1列(Distance1)で1,2,3,4 ... 58(58メートルが58等分に分割されている)のように、それぞれ1メートルから58フィートの値で-43.45(Bearing1)画像2に示すように、私は新しいシートにこれを生成したい。最初の行の後

Image 2

、コードは次の距離の行(すなわち、20.70)に移動し、ステップ1を繰り返したが、以前の1〜58セルに追加しなければならないはずです。すなわち、58,59,60およびベアリング1の列の値を-42.48などで埋めてください。画像3.

Image 3

に示されているように私はVBAに新しいですし、誰かが私を助けることができれば、本当に参考になります:)

答えて

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 
関連する問題