当前位置: 代码迷 >> VBA >> 向各位大侠请问1个EXCEL的VBA编程有关问题,先多谢啦
  详细解决方案

向各位大侠请问1个EXCEL的VBA编程有关问题,先多谢啦

热度:9490   发布时间:2013-02-26 00:00:00.0
向各位大侠请教1个EXCEL的VBA编程问题,先谢谢啦
我想写一个函数,主要是完成查找对应列的值,具体举例如下:
数据源行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)                                         '   返回列上的数值
  相关解决方案