【问题标题】:Excel Macro (VBA) that checks cell values against a list in another workbookExcel 宏 (VBA),根据另一个工作簿中的列表检查单元格值
【发布时间】:2014-12-08 23:45:16
【问题描述】:

我有两个工作簿,一个是数据(我们将称为 WB 1),它需要将 k 列中的值与另一个包含条目的真实值的工作簿(我们将称为 WB 2)上的值进行检查。每个条目都有一个附加的数量,因此价格会有所不同。 WB 1 在每行都有条目的列表中,WB 2 在每一行都有一个项目,每列是该数量的价格。我需要一个宏来检查这些值,并将 WB 1 上的任何值替换为 WB 2 中的正确值。

示例数据:

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   | ... |

【问题讨论】:

  • 是什么阻碍了您实现这一目标?仅描述您的要求的问题通常会在此处结束。
  • 对不起!完全忘记发布原因。我一直无法使用 vba 加载参考文件。此外,我一直无法根据用于定义哪个单元格对于该特定单元格值正确的两个数据点进行逐行搜索和替换

标签: vba excel


【解决方案1】:

这里是代码sn-p

*要记住的要点

第 1 阶段:加载工作簿

  1. 您需要先通过路径引用源工作簿或将其称为加载工作簿。
  2. 然后分配源工作簿 say(set sourceworkbook = "workbook 从路径派生并分配给一个变量"
  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

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

问候, 玛尼

【讨论】:

    【解决方案2】:

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

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

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

      对于 rowIndex = 2 到 lastRow

    (或者使用范围)

    1. 在搜索之间执行 vlookup。

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

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

    (如果您需要确切的代码 sn-ps,请告诉我)

    问候, 玛尼

    【讨论】:

    • Code sn-ps 将不胜感激,因为我不太熟悉在 Excel 中处理引用方面的事情。感谢您的快速回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多