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