使用表自动填充的VBA Excel循环

时间:2018-10-23 09:59:08

标签: excel vba excel-vba

我有2个值,其中:A2是纬度,而B2是经度。两者都在0.25步骤上更改。

我想使用这些值通过循环自动填充表格。

这个想法是,对于每个单个值(例如49),我都需要另外几个值(例如-2-1.75-1.5,{{1} }等),请按照所附图片在同一行中设置。

首先,此循环(指的是纬度值):

-1.25

,这将在2列中自动填充(第1个纬度值和第2个输出值)。 其次,我试图修改此循环以进行垂直自动填充,这使我可以在行中设置值(第一行为经度值,第二行为输出值)。 下一步应该只包含与相关lon lat值相对应的输出值。

循环看起来像这样:

Sub calc2()
    Dim i As Single
    With Worksheets("9")
    .UsedRange.clear
    .Range("a1").Value = "Input"
    .Range("f1").Value = "Output"
    For i = 40 To 55 Step 0.25
        Worksheets("1_GENERAL").Range("A2").Value = i
        With .Cells(Rows.Count, 1).End(xlUp)
        .Offset(1, 0).Value = i
        .Offset(1, 1).Value = Worksheets("4.MINUTES").Range("BL371").Value
        End With
    Next i
End With
End Sub

但是它不起作用。我必须混合一些东西。基本上,我的输出值位于不同的工作表(4.MINUTES)中,我想将其粘贴到一个位置以获取不同的坐标,最终制作一张表(请参阅附件中的示例)。 任何想法如何做到这一点? 我将不胜感激。预先谢谢你。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

@Mariusz Krukar如下图所示导入值49和25并尝试:

Option Explicit

Sub test()

Dim i As Long
Dim LAT As Double
Dim LON As Double
Dim Lastrow As Long
Dim Lastcolumn As Long
Dim Times As Integer

With wsTest

    LAT = .Range("A2").Value
    LON = .Range("B1").Value

    Times = (55 - LAT) / 0.25

    For i = 1 To Times
        Lastrow = .Range("A" & Rows.Count).End(xlUp).Row

        LAT = LAT + 0.25

        .Range("A" & Lastrow + 1) = LAT

    Next i
     Debug.Print LAT

    Times = (LON + 7.75) / 0.25

    For i = 1 To Times
        Lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column

        LON = LON - 0.25

        .Cells(1, Lastcolumn + 1) = LON

    Next i

End With

End Sub

结果就像图片一样

enter image description here

答案 1 :(得分:0)

我正在尝试您的代码,但是问题是,没有显示任何错误,但是代码不起作用。

Sub autofill_example()
Dim i As Long
Dim LAT As Double
Dim LON As Double
Dim Lastrow As Long
Dim Lastcolumn As Long
Dim Times As Integer

With Sheets("9")

    LAT = Sheets("1_GENERAL").Range("A2").Value
    LON = Sheets("1_GENERAL").Range("B2").Value

    Times = (55 - LAT) / 0.25

    For i = 1 To Times
        Lastrow = .Range("A" & Rows.Count).End(xlUp).Row

        LAT = LAT + 0.25

        .Range("A" & Lastrow + 1) = LAT

    Next i
        Debug.Print LAT

        Times = (LON + 7.75) / 0.25

        For i = 1 To Times
            Lastcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column

            LON = LON - 0.25

        .Cells(1, Lastcolumn + 1) = LON

    Next i

End With

End Sub

您能建议With值吗?我的LON和LAT值在单独的纸上。