2015-08-23 146 views
1

我有一個問題,我值嘗試複製......複製值不列VBA的公式

假設的A33值是1655,公式的單元格IFERROR(「L-邏輯」!G14 ;「」),並在複製時顯示0,如果我點擊複製的單元格,它將顯示公式。這是爲什麼?我是否需要粘貼特殊值?有什麼建議麼?

我在正確的道路上嗎?如果我wan't檢查單元格的值,我想用這個..

如果ws.Cells(1,1)<> 「布拉布拉」 然後ws.Range( 「A1:A50」 & LASTROW)複製目的地:=工作

下面是我的示例代碼。問候

For Each Ws In Sheets(Array("List 1", "list 2", "List3")) 

     lastrow = Ws.Range("A" & Rows.Count).End(xlUp).row 

For i = 1 To lastRow 
If ws.cells(i, 1)<> "testtest" Then 

     Ws.Range("C1:C50" & lastrow).Copy Destination:=Worksheets("Master list").Range("D" & lastRowMaster) 
     Ws.Range("A1:A50" & lastrow).Copy Destination:=Worksheets("Master list").Range("A" & lastRowMaster) 
     Ws.Range("L1:L50" & lastrow).Copy Destination:=Worksheets("Master list").Range("B" & lastRowMaster) 
     Ws.Range("L1:L50" & lastrow).Copy Destination:=Worksheets("Master list").Range("C" & lastRowMaster) 
     lastRowMaster = lastRowMaster + Range("C1:C" & lastrow).Rows.Count 
     Next i 
Next 

回答

0

我喜歡你做什麼lastRowMaster

對於直接價值轉移,您可以改變它們。

lrm = 1 
With Worksheets("MasterList") 
    For Each ws In Sheets(Array("List1", "List2", "List3")) 
     lr = ws.Range("A" & Rows.Count).End(xlUp).Row 
     .Range("D" & lrm).Resize(lr, 1) = ws.Range("C1:C" & lr).Value2 
     .Range("A" & lrm).Resize(lr, 1) = ws.Range("A1:A" & lr).Value2 
     .Range("B" & lrm).Resize(lr, 1) = ws.Range("L1:L" & lr).Value2 
     .Range("C" & lrm).Resize(lr, 1) = ws.Range("L1:L" & lr).Value2 
     lrm = lrm + Range("A1:A" & lr).Rows.Count 
    Next 

    '... 

End With 

目的地需要調整大小,以適應值轉移。僅僅引用複製和粘貼等頂級單元是不夠的。請注意那些從第7行開始的小心。你將不得不做一些數學運算來獲得正確的Range.Resize property

+0

非常感謝您的回答。但我如何檢查單元格的值?像ws.Range(「C1:C」&lr).Value2 <>「test」? – sandi

+0

您必須遍歷數據或使用公式,最終將該公式還原爲其返回的值。 – Jeeped

+0

我在mastersheet上使用with語句並過濾數據。 – sandi