2017-03-05 124 views
0

位背景的:我想要一臺從「創建表」 N2複製:AE14刪除行如果列K:R全包含空白VBA的Excel

Set r = Sheets("Create Form").Range("COPYTABLEB") 
Selection.Copy 

Set dest = Sheets("Sample Data").Range("B1").End(xlDown).Offset(1, 0)  
r.Copy 
dest.PasteSpecial Paste:=xlPasteValues 

我希望它只是複製那些有值而不是空白的單元格,但不幸的是它正在拾取公式並將它們粘貼爲空白。所以當我去粘貼下一部分時,它會將空白視爲數據。

所以相反,我試圖找出一種方法來刪除「示例數據」中的整個行,如果列K:R全部包含空白,一旦它被複制。

我目前有一個循環,它爲列B是空白,但它需要太長時間。

Lastrow = Range("B" & Rows.Count).End(xlUp).Row 
MsgBox (Lastrow) 
For i = Lastrow To 2 Step -1 
If Trim(Range("B" & i).Value) = "" And Trim(Range("B" & i).Value) = "" Then 
Range("B" & i).EntireRow.Select 
Selection.Delete 

End If 

Next i 

可能有人請幫助我或者:
一)複製和粘貼值減去跨越所有的空白
b)或幫我刪除行的更快的方法。?

+0

你寫了_「如果列K:R都包含空白」_,但是你的代碼(如果修剪(範圍(「B」&i).Value)=「」和修剪(範圍(「B」&i).Value)=「」然後'檢查列「B」空單元格:你真正需要什麼? – user3598756

回答

0

假設

  • 要刪除

「一整行的 」樣本數據「,如果列K:R全包含空格」

你可以嘗試這個:

Sub CopyValuesAndDeleteRowsWithBlankKRColumns() 
    Dim pasteArea As Range 
    Dim iRow As Long 

    With Sheets("Create Form").Range("COPYTABLEB") 
     Set pasteArea = Sheets("Sample Data").Range("B" & Rows.count).End(xlUp).Offset(1, 0).Resize(.Rows.count, .Columns.count) 
     pasteArea.Value = .Value 
    End With 
    With Intersect(pasteArea, Sheets("Sample Data").Range("K:R")) 
     For iRow = .Rows.count To 1 Step -1 
      MsgBox WorksheetFunction.CountBlank(.Rows(iRow)) & " - " & WorksheetFunction.CountBlank(.Rows(iRow)) Mod 8 
      If WorksheetFunction.CountBlank(.Rows(iRow)) Mod 8 = 0 Then .Rows(iRow).EntireRow.Delete 
     Next 
    End With 
End Sub 
+0

@Shawn Cartwright,如果我的答案解決了您的問題,請點擊答案旁邊的複選標記以接受它,將其從灰色變爲灰色。謝謝 – user3598756

+0

@ShawnCartwright,有機會從您那裏獲得反饋? – user3598756

+0

奇妙的這是一種享受。唯一的問題是我按降序排序,然後在頂部一行旁邊的列中添加超鏈接。你能幫忙嗎? 公用Sub超鏈接() 昏暗的路徑作爲字符串 「創建上的作業號 工作表(‘樣品數據’)的超級鏈接,選擇 路徑= ThisWorkbook.Path&‘\ PDF文件樣本\’&範圍(「B2 「)&」 - 「&Range(」H2「)&」.pdf「 工作表(」示例數據「)Hyperlinks.Add Anchor:= Range(」C2「),Address:= Path,TextToDisplay:=」File 「 結束子 –