繁体   English   中英

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

[英]Excel Macro (VBA) that checks cell values against a list in another workbook

我有两个工作簿,一个是数据(我们称为 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   | ... |

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

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

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

    对于 rowIndex = 2 到 lastRow

(或者使用范围)

  1. 在搜索之间执行 vlookup。

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

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

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

问候, 玛尼

这是代码片段

*要记住的要点

阶段 1:加载工作簿

  1. 您需要首先通过路径引用源工作簿或将其称为加载工作簿。
  2. 然后分配源工作簿 say(set sourceworkbook = "从路径派生的工作簿并分配给一个变量"
  3. stackoverflow 中提供了许多代码来实现相同的目的。

阶段 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

[记得使用符合您要求的适当数据类型声明变量]/

问候, 玛尼

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM