【问题标题】:VBA Excel looping with table autofillVBA Excel循环与表格自动填充
【发布时间】:2020-05-04 16:11:34
【问题描述】:

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

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

这个想法是,对于每一个值(例如 49),我需要在同一行中设置另外几个值(例如 -2-1.75-1.5-1.25 等) ,如附图所示。

首先这个循环(指一个,纬度值):

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

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

循环如下所示:

Sub calc_full()
    Dim i As Single
    With Worksheets("9")
    .UsedRange.clear
    .Range("a1").Value = "Input"
    .Range("b1").Value = "Output"
    .Range("c1").Value = "Input"
    .Range("d1").Value = "Output"
    For i = 40 To 45 Step 0.25
    For k = -2 To 2 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
        With .Cells(Cols.Count, 1).End(xlUp)
        .Offset(2, 0).Value = k
        .Offset(2, 1).Value = Worksheets("4.MINUTES").Range("BL371").Value
        End With
    Next i
    Next k
End With
End Sub

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

【问题讨论】:

  • 使用带步骤的系列,而不是自动填充。

标签: excel vba


【解决方案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

结果如图:

【讨论】:

    【解决方案2】:

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

    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 值在单独的表上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多