Vba 将函数插入一系列单元格

Vba 将函数插入一系列单元格,vba,excel,Vba,Excel,我是VBA的新手,我尝试插入VLOOKUP函数 我从网页上获取数据,经过一些自动过滤和自动删除后,数据缩小到更小的大小。但由于它是一个动态数据,最后一行总是会更改 我的数据如下: A B C FleetType MSN Registration 我已经填写了注册(C),想找到列在不同表格中的车队类型 我尝试使用formula1c1插入公式,但最终得到一条1004消息。我还尝试使用Application.VLookup,也得到了1004消息 由于我

我是VBA的新手,我尝试插入
VLOOKUP
函数

我从网页上获取数据,经过一些自动过滤和自动删除后,数据缩小到更小的大小。但由于它是一个动态数据,最后一行总是会更改

我的数据如下:

A          B       C
FleetType  MSN     Registration    
我已经填写了注册(
C
),想找到列在不同表格中的车队类型

我尝试使用
formula1c1
插入公式,但最终得到一条1004消息。我还尝试使用
Application.VLookup
,也得到了1004消息

由于我无法完成这项工作,因为我知道注册的前两个字母提供了车队类型的线索,我设置了一个嵌套的
IF
函数并尝试插入它;也没有运气

这是我试图运行的
子文件(我没有删除我尝试过的文件):


这有什么办法吗?我所要求的只是在VBA项目中使用好的
VLookup

您可以使用
WorksheetFunction.VLookup
来处理好的
VLookup
。 但是你也可以把这个宏用于你的程序。解释在评论中

Option Explicit
Sub FindFleetType()
    Const Boeing As String = "Boeing"
    Const Airbus As String = "Airbus"
    Dim MySheet As Worksheet
    Dim MyRange, c As Range
    Dim MyInt, LastRow As Integer
    Dim MyStr, MyArray(7) As String

    'filling string array
        MyArray(0) = "JK"
        MyArray(1) = "JG"
        MyArray(2) = "JF"
        MyArray(3) = "JH"
        MyArray(4) = "JV"
        MyArray(5) = "JJ"
        MyArray(6) = "JY"
        MyArray(7) = "LJ"

    'defining worksheet
    Set MySheet = ThisWorkbook.Worksheets("Data")

    'finding lastrow has data on columnn C
    'so you don't have to change the range manually every time
    With MySheet
        LastRow = .Range("C" & .Rows.Count).End(xlUp).Row
    End With

    'defining range to be filled
    Set MyRange = ThisWorkbook.ActiveSheet.Range("A2:A" & LastRow)

    'iterating each cell on defined range
        For Each c In MyRange
            MyStr = Left(c.Offset(0, 2).Value2, 2) 'get first two letters of "Registration" column C
                'control if your array contains your string
                If ContainString(MyStr, MyArray) Then
                    c.Value2 = Boeing
                    Else
                    c.Value2 = Airbus
                End If
        Next
End Sub
Private Function ContainString(ByVal StringToBeFound As String, StringArray As Variant) As Boolean
  ContainString = (UBound(Filter(StringArray, StringToBeFound)) > -1)
End Function

更改
并查看它是否有效
FormulaR1C1
使用逗号作为公式字段分隔符,而不管您的本地公式分隔符是什么。谢谢,非常有用。
Option Explicit
Sub FindFleetType()
    Const Boeing As String = "Boeing"
    Const Airbus As String = "Airbus"
    Dim MySheet As Worksheet
    Dim MyRange, c As Range
    Dim MyInt, LastRow As Integer
    Dim MyStr, MyArray(7) As String

    'filling string array
        MyArray(0) = "JK"
        MyArray(1) = "JG"
        MyArray(2) = "JF"
        MyArray(3) = "JH"
        MyArray(4) = "JV"
        MyArray(5) = "JJ"
        MyArray(6) = "JY"
        MyArray(7) = "LJ"

    'defining worksheet
    Set MySheet = ThisWorkbook.Worksheets("Data")

    'finding lastrow has data on columnn C
    'so you don't have to change the range manually every time
    With MySheet
        LastRow = .Range("C" & .Rows.Count).End(xlUp).Row
    End With

    'defining range to be filled
    Set MyRange = ThisWorkbook.ActiveSheet.Range("A2:A" & LastRow)

    'iterating each cell on defined range
        For Each c In MyRange
            MyStr = Left(c.Offset(0, 2).Value2, 2) 'get first two letters of "Registration" column C
                'control if your array contains your string
                If ContainString(MyStr, MyArray) Then
                    c.Value2 = Boeing
                    Else
                    c.Value2 = Airbus
                End If
        Next
End Sub
Private Function ContainString(ByVal StringToBeFound As String, StringArray As Variant) As Boolean
  ContainString = (UBound(Filter(StringArray, StringToBeFound)) > -1)
End Function