2017-03-05 75 views
-1

我有一個VBA代碼,你可以看到下面,我記錄它。在錄製它時,它會以偏移量格式編寫公式。所以我不知道如何更改範圍我需要重新格式化我的Vlookup公式excel

如何轉換; R3C[-3]:R[1488]C[2]這通常是B$3:G1489

到:

B $ 3:(列 「G」 最後一個活動單元格)

我怎麼能這樣做?

Sub duzenle() 

Columns("E:E").Select 
Selection.Copy 
Range("L1").Select 
ActiveSheet.Paste 
Range("E12").Select 
Application.CutCopyMode = False 
ActiveCell.FormulaR1C1 = _ 
    "=IFERROR(VLOOKUP(RC[-3],C.A.!R3C[-3]:R[1488]C[2],4,0),IF(ISBLANK('2017'!RC[7]),"""",'2017'!RC[7]))" 
Range("E12").Select 
Selection.AutoFill Destination:=Range(ActiveCell, ActiveCell.End(xlDown)), Type:=xlFillDefault 
Range(ActiveCell, ActiveCell.End(xlDown)).Select 
Columns("E:E").Select 
Selection.Copy 
Range("E1").Select 
ActiveSheet.Paste 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 
Columns("L:L").Select 
Application.CutCopyMode = False 
Selection.Delete Shift:=xlToLeft 
Range("A1").Select 
MsgBox "'C.A' Degerleri Guncellenmistir." 

End Sub 

回答

1

您可以刪除你的一些不必要的SelectSelection並通過更換你的前幾行代碼:

Columns("E:E").Select 
Selection.Copy 
Range("L1").Select 
ActiveSheet.Paste 

有了:

Columns("E:E").Copy Range("L1") 

關於你的公式,你需要用Formula代替FormulaR1C1,見下面的代碼:

With Worksheets("C.A.") 
    LastRow = .Cells(.Rows.Count, "G").End(xlUp).Row '<--get last row with data in Column G from "C.A." sheet 
End With 

Range("E12").Formula = _ 
    "=IFERROR(VLOOKUP(B3,C.A.!B$3:G" & LastRow & ",4,0)...' <-- the rest of your formula 

編輯1:剛剛修正公式代碼行:

Range("E12").Formula = "=IFERROR(VLOOKUP(B3,C.A.!B$3:G" & LastRow & ",4,0),IF(ISBLANK('2017'!L12)," & Chr(34) & Chr(34) & ",'2017'!L12))" 
+0

@efe可以tercan你讀過我的回答上面?任何反饋 ? –

+0

我剛讀和嘗試,但它給了一個錯誤「範圍(‘E12’)。公式= _「」,我不知道爲什麼,看到下面 」子duzenle() 列(「 E:E 「)複製範圍(」 L1 「) 範圍(」 E12 「)。選擇 Application.CutCopyMode =假 隨着工作表(」 CA「) LASTROW = .Cells(.Rows。 (「E12」)。Formula = _(「E12」)。結束(xlUp)。行 End With 範圍 「= IFERROR(VLOOKUP(B3,CA!B $ 3:G」&LastRow& 「,4,0),IF(ISBLANK('2017'!L12),」「,'2017'!L12)) '' –

+0

使用'_'字符可以將長命令分成幾行。它必須是該行中的最後一個字符。如果你不拆分語句,刪除'_'字符。 – teylyn