对于下表,

我想在col C中查找值.由于col A和col B中的值不是唯一的,因此VLOOKUP失败.例如,VLOOKUP(1,表,3)返回5而从不返回1.
但是,列A和B 的组合是唯一的.例如,1blah = 5,而1foo = 1.
如何使用cols A和B的组合作为唯一键来返回col C中的相应值?
我不确定是否应该使用工作表函数或自定义VBA函数来实现.我尝试使用CONCATENATE生成唯一键,但这不起作用,因为这会导致数字和字符串的组合.
我在一张纸上有几个命名的列。我想将列号发送到将返回列名的函数。
例如,如果第 1 列名为“apple”,我想将第 1 列传递给返回列名称“apple”的函数。我的尝试:
Function getColName(colNumber As Integer) As String
'return column name when passed column number
getColName = Cells(1, colNumber).Column.Name
End Function
Run Code Online (Sandbox Code Playgroud)
我怎样才能让这个代码工作?
我希望标题澄清目标.我的所有尝试都失败了,例如:
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("A1:A10") = "blah"
Range("A1:A10").Offset(0, 1).AddComment "fee"
Range("A1:A10").Offset(0, 2).AddComment "fi"
Range("A1:A10").Offset(0, 3).AddComment "fo"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
我也试过这种方法:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Range("A1:A10")
If cell.Value = "blah" Then
cell.Value.Offset(0, 1).AddComment "fee"
cell.Value.Offset(0, 2).AddComment "fi"
cell.Value.Offset(0, 3).AddComment "fo"
End If
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
还有这个:
Private Sub Worksheet_Change(ByVal Target As Range)
With Range(Target.Offset(0, 1).Address).AddComment
Range(Target).Offset(0, 1).Comment.Visible = False
Range(Target).Offset(0, 1).Comment.Text Text:="fee"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
请注意,该代码旨在成为插入特定工作表中的事件处理程序.我明显误解了范围方面的VBA语法.任何这些潜艇工作的任何帮助将是非常感谢.
跟进:Tim建议使用Worksheet_Calculate就像一个魅力.我能够通过蒂姆代码的最终变化来实现我的目标:
Private Sub …Run Code Online (Sandbox Code Playgroud)