簡體   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