在VBA中的Hlookup和Match等效

时间:2014-01-04 13:01:11

标签: excel vba excel-vba

sample.xls image

我在下面有一个代码,但它无法正常工作。这段代码中缺少一些东西。你能帮帮我吗?

提前致谢。

我添加了一个sample.xls来显示我的请求。

sample.xls

我没有错误处理程序,我的hlookup和match函数返回一个值。但它返回range(N6:CQ7899)中每个单元格的相同结果(值)。通常,如果我在单元格N6 =IFERROR(HLOOKUP(N$5,min!$C$2:$CF$7899,MATCH($E6,min!$B$2:$B$7899,0),FALSE);0)中使用公式并转到最后一行和最后一列,则每个单元格都将具有hlookupmatch的唯一条件。我的要求是宏如何做到如下; 对于范围N6中的行:N7899,O6:O7899,...和CQ6:CQ7899

  

N6 = IFERROR(HLOOKUP(的 N $ 5'/ strong>下,分钟$ C $ 2:$ CF $ 7899,MATCH(的 $ E6 ,分钟$ B $ 2:$ B $ 7899,0),FALSE); 0), N7 = IFERROR(HLOOKUP(的 N $ 5'/ strong>下,分钟$ C $ 2:$ CF $ 7899,MATCH(的 $ E7 下,分钟$ B $ 2:$ B $ 7899,0)。,FALSE); 0)`,,, 。,。   到最后一排。

并为列做;

  

O6   =IFERROR(HLOOKUP(**O$5**,min!$C$2:$CF$7899,MATCH(***$E6***,min!$B$2:$B$7899,0),FALSE);0),   O7   =IFERROR(HLOOKUP(**O$5**,min!$C$2:$CF$7899,MATCH(***$E7***,min!$B$2:$B$7899,0),FALSE);0),...,。,。   列(CQ7899)中的最后一个单元格CQ

如果可能,请检查sample.xls image或xls文件。

Function matcd()

  Dim adegm As Range
  Dim adizm As Range
  Dim adegh As Range
  Dim adizh As Range
  Dim rnghFormulaCell As Range
  Dim varResult1 As Variant

  Set adegh = Worksheets("ara").Range("N5")
  Set adizh = Worksheets("min").Range("C2:CF7899")
  Set adegm = Worksheets("ara").Range("E5:E")
  Set adizm = Worksheets("min").Range("B2:B7899")
  Set rnghFormulaCell = Worksheets("ara").Range("N6:CQ7899") '

  Worksheets("ara").Range("N6:CQ" & Rows.Count).ClearContents

  varResult1 = Application.WorksheetFunction.HLookup(adegh, adizh, Application.WorksheetFunction.Match(adegm, adizm, 0), 0)

  '.....

  'i don't know how to Add results of varResult1 to an array in rnghFormulaCell
  '.....

  If Not IsError(varResult1) Then rnghFormulaCell = varResult1

End Function

0 个答案:

没有答案