我正在使用Excel爲計費系統生成報告,並且我想使用VBA來簡化更新Excel的過程。我想要做的是使用vlookup函數將各個命名工作表中的列(G:AI)反射回主表格。所有片材從排4.開始(第3行是頭)VBA vlookup將多個工作表中的特定列複製到工作表
因此,我將進一步簡化該過程爲這樣:
VLOOKUP VBA(當在名稱的工作表所做的更改) 1.要啓用VLOOKUP函數在名稱工作表(「John」,「Charlie」,「George」)的名單中列(G:AI) 2.由於Mastersheet是John,Charlie和George的混合數據,用於跨列輸入Vlookup公式(G: AI),然後直到最後一行爲止。3.我的查找範圍將從命名工作表(John,Charlie,George)開始,範圍(A1:AI)從第7列第4行開始直到數據結束。
ws1.Cells(r, c).Value = Application.VLookup(ws1.Cells(r, 1).Value, wsNames.Range("A1:AI500"), colnum, False)
以下是我到目前爲止的代碼。這是我現在制定的(有幫助的)。任何幫助將不勝感激。
我的問題是,運行代碼時,ws11的vlookup值在正確的位置。但是,ws12和ws13的vlookup值將移向工作表的更靠左側。例如, 而ws11的查找值在列(A:AI)中 - 右列 ws12的查找值在列(AP:BR) - 列AI中的7列和 ws13的查找值在列BY:DA) - 列BR欄中的7列 是否有一行代碼可以插入來解決此問題?
Sub green_update()
Dim wb As Workbook, ws1 As Worksheet, ws11 As Worksheet, ws12 As Worksheet, ws13 As Worksheet
Set wb = ThisWorkbook
Set ws1 = wb.Sheets("Sheet1")
Set ws11 = wb.Sheets("Sheet11")
Set ws12 = wb.Sheets("Sheet12")
Set ws13 = wb.Sheets("Sheet13")
Dim colNo As Long, ARowNo as Long
Dim for_col As Long, i As Long, r As Long, c As Long, colnum As Long
r = 4: c = 7: colnum = 7
Dim wsNames As Variant
For Each wsNames In Sheets(Array("sheet11", "sheet12", "sheet13"))
colNo = wsNames.Cells("4", Columns.Count).End(xlToLeft).Column
For for_col = 1 To colNo
ARowNo = wsNames.Cells(Rows.Count, "A").End(xlUp).row
For i = 1 To ARowNo
ws1.Cells(r, c).Value = Application.VLookup(ws1.Cells(r, 1).Value, wsNames.Range("A1:AI500"), colnum, False)
If IsError(ws1.Cells(r, c).Value) Then
ws1.Cells(r, c).Value = 0
End If
r = r + 1
Next
r = 4
colnum = colnum + 1
c = c + 1
Next
colnum = 7
Next wsNames
End Sub
而你的問題是......? – SJR
我在做一個假設,這是由於colnum未被設置之前它被用於查找 – Smithy7876
@SJR我已經編輯了問題,以便更好的理解下降。我對延遲致歉 – Carmen