簡體   English   中英

兩個工作表之間的交叉引用

[英]Cross-reference between two worksheets

我有兩個電子表格(OriginalData 和 Template),我試圖弄清楚如何創建一個 vba 代碼,只有當模板工作表中的列中的特定單元格為空白時,該代碼才會將數據從 OriginalData 工作表中提取到模板工作表中. 數據將填充到模板工作表上的另一列中,而不是替換原來的空白單元格。 我還需要遍歷數據范圍內的每個空白單元格。 我知道我可以使用 VLOOKUP 公式,但我試圖盡可能地自動化這個過程,而不必每次都輸入公式。

到目前為止,這是我能夠提出的,但它不起作用,現在我被卡住了,所以任何幫助將不勝感激。 我對 VBA 編碼還比較陌生,所以請對我放心。

Dim shOrg As Worksheet: Set shOrg = ThisWorkbook.Sheets("OriginalData")
Dim shTemp As Worksheet: Set shTemp = ThisWorkbook.Sheets("Template")
Dim CheckCell as Range
LastRowTemp = shTemp.Cells(Rows.Count, 1).End(xlUp).Row + 1

For Each CheckCell in shTemp.Range("B" & LastRowTemp)
   If CheckCell.Value = "" Then
      Range("C" & CheckCell).Value = Application.VLookup(CheckCell,shOrg.Range("A2:E"),5,FALSE)
   End If
Next CheckCell

End Sub

模板工作表 原始數據工作表

針對您上面的評論,以下代碼將實現您想要的 - 即定義要評估的行數。

Option Explicit
Sub AutoVlookup()
Dim shOrg As Worksheet, shTemp As Worksheet
Dim OrgRng As String, TempRng As Range, CheckCell As Range

Set shOrg = Sheets("OriginalData")
Set shTemp = Sheets("Template")

'Define the lookup ranges i.e. the last rows
shOrg.Range("A2:E" & shOrg.Cells(Rows.Count, 1).End(xlUp).Row).Name = "OrgRng"
Set TempRng = shTemp.Range("B2:B" & shTemp.Cells(Rows.Count, 1).End(xlUp).Row)

For Each CheckCell In TempRng
    If CheckCell.Value = "" Then
        CheckCell.Offset(, 1).FormulaR1C1 = "=VLOOKUP(RC1,OrgRng,5,FALSE)"
        CheckCell.Offset(, 1).Value = CheckCell.Offset(, 1).Value
    End If
Next CheckCell

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM