excelvba偏移函数

excelvba偏移函数,excel,offset,vba,Excel,Offset,Vba,我有一个Excel文件,在A列和B列中包含信息。由于这些列的行数可能不同,我想使用函数offset,这样我就可以将公式作为数组一次性打印出来,而不是在每个单元格的公式上循环(数据集包含近100万个数据点) 我的代码实际上是按照我希望的方式工作的,我只是不知道如何在范围(D1:D5)内打印代码。结果现在以范围(D1:H1)打印。有人知道如何在for语句中使用此偏移量吗 Sub checkOffset() Dim example As Range Dim sht As Worksheet Dim

我有一个Excel文件,在A列和B列中包含信息。由于这些列的行数可能不同,我想使用函数offset,这样我就可以将公式作为数组一次性打印出来,而不是在每个单元格的公式上循环(数据集包含近100万个数据点)

我的代码实际上是按照我希望的方式工作的,我只是不知道如何在范围(D1:D5)内打印代码。结果现在以范围(D1:H1)打印。有人知道如何在for语句中使用此偏移量吗

Sub checkOffset()

Dim example As Range
Dim sht As Worksheet
Dim LastRow As Long

Set sht = ThisWorkbook.Worksheets("Sheet1")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

Set example = Range("A1:A1")

For i = 1 To LastRow
    example.Offset(0, i + 2).Formula = "=SUM(A" & i & ":B" & i & ")"
Next i

End Sub
  • 您不需要为此使用VBA。简单类型=单元格D1中的和(A1:B1),然后

  • 如果仍要使用VBA,请使用以下命令:

    Sub checkOffset()
    Dim example As Range
    Dim sht As Worksheet
    Dim LastRow As Long
    
    Set sht = ThisWorkbook.Worksheets("Sheet1")
    LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
    
    Set example = Range("A1:A1")
    
    For i = 1 To LastRow
        example.Offset(i - 1, 3).Formula = "=SUM(A" & i & ":B" & i & ")"
    Next i
    
    End Sub
    
  • offset
    的工作方式是行偏移、列偏移。您希望列始终固定在右侧的3处

  • 您不需要为此使用VBA。简单类型=单元格D1中的和(A1:B1),然后

  • 如果仍要使用VBA,请使用以下命令:

    Sub checkOffset()
    Dim example As Range
    Dim sht As Worksheet
    Dim LastRow As Long
    
    Set sht = ThisWorkbook.Worksheets("Sheet1")
    LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
    
    Set example = Range("A1:A1")
    
    For i = 1 To LastRow
        example.Offset(i - 1, 3).Formula = "=SUM(A" & i & ":B" & i & ")"
    Next i
    
    End Sub
    
  • offset
    的工作方式是行偏移、列偏移。您希望列始终固定在右侧的3。

    使用
    偏移量(行,列)
    ,您希望以行的增量(
    i-1
    )偏移,并向右偏移3列(从列“A”到列“D”)

    请尝试下面修改的代码:

    Set example = Range("A1")
    
    For i = 1 To LastRow
        example.Offset(i - 1, 3).Formula = "=SUM(A" & i & ":B" & i & ")"
    Next i
    
    使用
    偏移量(行、列)
    ,您希望以行的增量(
    i-1
    )和右侧的3列(从列“A”到列“D”)进行偏移

    请尝试下面修改的代码:

    Set example = Range("A1")
    
    For i = 1 To LastRow
        example.Offset(i - 1, 3).Formula = "=SUM(A" & i & ":B" & i & ")"
    Next i
    

    一步不循环地将公式输出到整个范围的一种方法是使用R1C1表示法:

    编辑:修改代码以正确限定工作表引用


    一步不循环地将公式输出到整个范围的一种方法是使用R1C1表示法:

    编辑:修改代码以正确限定工作表引用


    是的,我理解,但由于它最终将用于我正在构建的一个更大的工具中,我希望所有内容都由vba计算。是的,我理解,但由于它最终将用于我正在构建的一个更大的工具中,我希望所有内容都由vba计算。