我想写一个函数,主要是完成查找对应列的值,具体举例如下:
数据源行SourceRow(): "A5:A15 "
目标数据行TargetRow() : "D5:D15 " '两个数据行个数相等,且位置一一对应
需要在 "A5:A15 "查找的值SourceValue 存放在 "B7 "(即要找到与B7中相同的值)
返回值为 "D5:D15 "中位置与 "A5:A15 "对应的值,且对应 "A5:A15 "中的值与 "B7 "相等(第1个或第n个,默认为1,由TargetNum指定)
具体代码如下:
'
' 在源数据行中查找给定数值的列,并返回目标行对应位置列的值
' SourceRow() 存放源数据行的数组
' SourceValue 需要查找的给定数值
' TargetRow() 存放目标数据行的数组
' TargetNum 如有相同数值,则返回指定第几个,默认是1
'
Function GetMirror(SourceRow As Rang, SourceValue As Single, TargetRow As Rang, TargetNum As Integer) As Single
Dim Column As Integer ' 数组位置
Dim ColumnMax As Integer ' 数组长度
Dim CountVal As Integer ' 相同数值计数
ColumnMax = CInt(UBound(SourceRow)) - 1 ' 取得数组长度
CountVal = 1 ' 设置初始相同计数为1
If TargetNum = 0 Then
TargetNum = 1 ' 如果没有输入TargetNum,默认为1
End If
' 在数组SourceRow中查找值等于SourceValue的位置
For Column = 0 To ColumnMax
If SourceRow(Column) = SourceValue Then
If CountVal = TargetNum Then
Exit For
Else
CountVal = CountVal + 1
End If
End If
Next
GetMirror = TargetRow(Colunm) ' 返回列上的数值