如何将匹配函数的值放在VBA中的偏移单元格中

时间:2018-09-22 19:44:05

标签: excel vba

我有两列:我试图遍历每一列,以找到要放在框中的单词。接下来,我想在其中写入相应的行号 该单元格位于当前单元格左侧的两个单元格中。 activecell.offset一直给我零,我不知道出了什么问题

The  jumps
quick   Over
brown   nine
fox   lazy
    dogs


Sub AddRow()
    Dim i As Integer, j As Integer, HT As Variant, nr As Integer, nc As Integer, lrow As Integer, lrows As Variant, rng1 As Range, rng2 As Range, row As Integer, rows As Integer
    nr = Selection.rows.Count
    nc = Selection.Columns.Count
    HT = InputBox("Enter column letter:")
    Set rng1 = Range("E1:E100")
    Set rng2 = Range("F1:F100")
    For i = 1 To nr
        For j = 1 To nc
            If ActiveCell(i, j) = HT And ActiveCell.Column = 1 Then
                 lrow = Application.WorksheetFunction.Match(HT, Range("E1:E200"), 0)

            Else
                If ActiveCell(i, j) = HT And ActiveCell.Column = 2 Then
                    lrow = Application.WorksheetFunction.Match(HT, Range("F1:F200"), 0)

                End If
                ActiveCell.Offset(0,2).Value = lrow
            End If

        Next j
    Next i
End Sub

1 个答案:

答案 0 :(得分:0)

改为使用范围。

QHarr对您的问题的评论正在按计划进行。

范围代表Excel工作表中的单个单元格或一组单元格,这是处理工作表中单元格的最佳方法。
您可以通过Excel坐标来指定范围,例如。 “ A1”或行号和列号。 这是获取范围,然后使用它来获取信息或使用它来移动到其他单元格的快速示例。 我包括对Offset()的正确使用。现在您将看到QHarr为什么要使用范围的原因,因为您需要一个Range对象才能使Offset()起作用。

...哦,Range.Value2给出单元格中的值。

Option Explicit

    Sub main()
    Dim HT As String
    Dim myRange As Range
    Dim ColumnNumber As Integer
    Dim myNewRange As Range


    HT = InputBox("Enter column letter:")

    'range returns a cell
    Set myRange = Range(HT & "1")

    'get the column of the cell.
    ColumnNumber = myRange.Column
    MsgBox ColumnNumber

    'get the cell, one cell over and one cell down
    Set myNewRange = myRange.Offset(1, 1)
    MsgBox "My New Range is at " & myNewRange.Row & " - " & myNewRange.Column


End Sub