Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中使用索引匹配的活动单元格动态输入_Vba_Dynamic_Indexing_Match - Fatal编程技术网

在VBA中使用索引匹配的活动单元格动态输入

在VBA中使用索引匹配的活动单元格动态输入,vba,dynamic,indexing,match,Vba,Dynamic,Indexing,Match,我正在尝试使用vba(抱歉,图片已附加)对附加的excel电子表格进行智能化处理。 工作表在单元格D161中有一个固定值,设置为45,Index match使用此值返回关键列中值的摘要。 我已经附加了两个模块和表单模块,模块一根据D161的输入值搜索并查找和激活单元格。 我看到了几个例子,变得比平常更困惑 我的工作流程是: 根据D161的值选择并激活单元格值 将此单元格值用作活动单元格 在此基础上选择关键列(以蓝色突出显示) 活动单元格(使用偏移量)有5列分布在 值数组 选择列并将其显示在摘要

我正在尝试使用vba(抱歉,图片已附加)对附加的excel电子表格进行智能化处理。 工作表在单元格D161中有一个固定值,设置为45,Index match使用此值返回关键列中值的摘要。 我已经附加了两个模块和表单模块,模块一根据D161的输入值搜索并查找和激活单元格。 我看到了几个例子,变得比平常更困惑 我的工作流程是:

  • 根据D161的值选择并激活单元格值

  • 将此单元格值用作活动单元格

  • 在此基础上选择关键列(以蓝色突出显示) 活动单元格(使用偏移量)有5列分布在 值数组

  • 选择列并将其显示在摘要表中,如中所示 阵列D161:K167

我发现了一个类似的主题,但我有点困惑,因为它超出了我的vba经验

我的代码

Sub FindThisValue()

Dim varLookFor As Variant
Dim GBAnchorageRng As Range
Dim GBLapRng As Range
Dim OCAnchorageRng As Range
Dim OCLapRng As Range

varLookFor = Range("D161").Value

'Good bond cell ranges or columns
Set GBAnchorageRng = Range(ActiveCell, ActiveCell.Offset(6, 15))
Set GBAnchorageRng = Range(ActiveCell, ActiveCell.Offset(6, 15))

'Othercases (formly known as poor do not use this description bond) cell range or columns
Set OCAnchorageRng = Range(ActiveCell, ActiveCell.Offset(6, 26))
Set OCAnchorageRng = Range(ActiveCell, ActiveCell.Offset(6, 28))

On Error GoTo Handler:

'ActiveWorkbook.ActiveSheet.
Range("B93:B148").Find(What:=varLookFor, LookAt:=x1Whole = 1).Activate

'Specify range
'Range(ActiveCell.Offset(6, 0), ActiveCell.Offset(0, 31)).Select

Exit Sub

Handler:

MsgBox ("Value not found")

End Sub
你可以试试这个

Sub FindThisValue()
    Dim f As Range

    Set f = Range("B93:B148").Find(What:=Range("D161").Value, LookAt:=xlWhole, LookIn:=xlValues)
    If f Is Nothing Then
        MsgBox ("Value not found")
        Exit Sub
    End If

    With Range("F161:F167")
        .Value = f.Offset(, 15).Resize(6).Value
        .Offset(, 2).Value = f.Offset(, 16).Resize(6).Value
        .Offset(, 3).Value = f.Offset(, 26).Resize(6).Value
        .Offset(, 5).Value = f.Offset(, 27).Resize(6).Value
    End With
End Sub
你可以试试这个

Sub FindThisValue()
    Dim f As Range

    Set f = Range("B93:B148").Find(What:=Range("D161").Value, LookAt:=xlWhole, LookIn:=xlValues)
    If f Is Nothing Then
        MsgBox ("Value not found")
        Exit Sub
    End If

    With Range("F161:F167")
        .Value = f.Offset(, 15).Resize(6).Value
        .Offset(, 2).Value = f.Offset(, 16).Resize(6).Value
        .Offset(, 3).Value = f.Offset(, 26).Resize(6).Value
        .Offset(, 5).Value = f.Offset(, 27).Resize(6).Value
    End With
End Sub

f成为活动单元格,得到它
。Resize(6)。Value
帮助显示数组中的路径
Resize(7)。Value
捕获所有需要的数据。整洁且有意义。只需指出,我的代码在引用
范围
对象时不依赖任何正确调用的
ActiveCell
。这样更安全!f成为活动单元格,得到它
。Resize(6)。Value
帮助显示数组中的路径
Resize(7)。Value
捕获所有需要的数据。整洁且有意义。只需指出,我的代码在引用
范围
对象时不依赖任何正确调用的
ActiveCell
。这样更安全!