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