Excel宏(VBA),它根据另一个工作簿中的列表检查单元格值

时间:2014-12-08 23:45:17

标签: excel vba excel-vba

我有两个工作簿,一个是数据(我们称之为WB 1),需要根据另一个工作簿(我们称之为WB 2)上的值检查列k中的值,其中包含条目的真值。每个条目都附有一个数量,因此价格取决于此。 WB 1在列表中,每行有条目,WB 2每行有一个项目,每列是该数量的价格。我需要一个宏,它将相互检查这些值,并用WB 2中的正确值替换WB 1上的任何值。

示例数据:

WB 1
    | Column A  | Column C | Column K |
     ---------------------------------
    | Item Name |    30    |  $5.42   |

WB 2
    | Column A  | Column F | Column G | Column H | ... |
                     15         30         45
     --------------------------------------------------
    | Item Name |  $2.86   |   $4.53  |  $6.00   | ... |

2 个答案:

答案 0 :(得分:0)

您可以使用vlookup执行搜索并按照以下说明获得更好的性能。

  1. 将WB1设置为源,将WB2设置为目标工作。

  2. 使用“For循环”选择WB1中的项目。确保选择适当的列及其元组

    对于rowIndex = 2到lastRow

  3. (或者使用范围)

    1. 在搜索之间执行vlookup。

    2. 粘贴/显示所需列中的输出

    3. 增加循环(下一行索引)。

    4. (如果您需要确切的代码段,请告诉我)

      此致 摩尼

答案 1 :(得分:0)

以下是代码段

*指出要记住

阶段1:加载工作簿

  1. 您需要先按路径引用源工作簿,或将其称为加载工作簿。
  2. 然后分配源工作簿说(设置sourceworkbook ="工作簿从路径派生并分配给变量"
  3. stackoverflow中有很多代码可以实现相同的目的。
  4. 阶段2:计算/操作/逻辑

    lastRow = SourceData.Rows.Count
    
    For rowIndex= 2 to lastRow
      lTemp = sourceWorksheet.Cells(rowIndex, "Q").Value
      lDigit = VLOOKUP( value, table, index_number, [not_exact_match] )  'not_exact_match is usually false
      DestinationWorksheet.Cells(rowIndex, "AM").Value = lDigit
    next rowIndex
    

    [请记住使用符合您要求的相应数据类型声明变量] /

    此致 摩尼