目前我正在创建一个从表列中读取数据的宏,资产号。数据是通过下拉菜单通过另一个表格DieMaster中的另一个表格的数据验证获得的。
然后执行索引和匹配以从DieMaster中查找匹配的数据并将其插入到Description列中。
此外,在获取数据后,表格列将作为值进行复制和粘贴以仅获取数据。这样,公式不会减慢过滤搜索的速度。
这就是我的想法。
Sub convert()
Dim osh As Worksheet
Set osh = ActiveSheet
osh.Range("ProjectEntry[Description]").Formula = "=IF(ISNA(INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2)),"""",INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2))"
osh.Range("ProjectEntry[Description]").Copy
osh.Range("ProjectEntry[Description]").PasteSpecial xlPasteValues
End Sub
我测试了宏,它运行得很好。但是我现在遇到的问题是尝试将宏分配给Asset No列。我的计划是让它在通过前面提到的下拉菜单在Asset No列中的单元格中选择一个值时,它会自动显示数据以供描述。
由于我无法使用传统方法将宏分配给列,是否有替代方法?
答案 0 :(得分:0)
您可以使用Worksheet_Change
事件来完成此操作:
Private Sub Worksheet_Change(Target as Range)
If Not Intersect(Target, Me.ListObjects("ProjectEntry").ListColumns("AssetNo").DataBodyRange) Is Nothing Then
With Me.Range("ProjectEntry[Description]")
.Formula = "=IF(ISNA(INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2)),"""",INDEX(DieMaster,MATCH(B4,DieMaster[Asset No],FALSE),2))"
.Value = .Value
End With
End If
End Sub
我的语法可能略有偏差(因为我不在我的普通电脑上),但它会让你足够近以自行调整。