2017-07-19 205 views
0

Column A and B Data環通非空白單元格

我只是想知道如何通過A列的非空白單元格我想要做的就是複製上[A1:B1]內容循環添加在列A上的每個非空白單元格之上。到目前爲止,我已經計算了列A上的非空白單元格,但是我被卡住了。我知道應該爲此使用偏移功能。

這裏是我到目前爲止的代碼:

Dim NonBlank as Long 

NonBlank = WorksheetFunction.CountA(Worksheet(1).[A:A]) 

    For i = 1 to NonBlank 
     [A1:B1].Copy Offset(1,0). "I'm stuck here" 
    Next i 
+0

你有什麼錯誤嗎?那些合併的單元格?還是背景只是白色的? – BruceWayne

+0

@BruceWayne - 那裏只是白色的。我沒有任何錯誤,因爲我不知道要編碼。 :( –

回答

0

作爲例子來模擬效果按Ctrl - 向下從單元格A1並顯示地址,價值立即窗口:

Sub HopToNextNonBlankCellBelow() 
    Dim oRng As Range 
    Set oRng = Range("A1") 
    Debug.Print "Cell Address", "Cell Value" 
    Do 
     Set oRng = oRng.End(xlDown) 
     If Not IsEmpty(oRng) Then Debug.Print oRng.Address(0, 0), oRng.Value 
    Loop Until oRng.Row = Rows.Count 
    Set oRng = Nothing 
End Sub 
0

試試這個......我已經(可能)在1000處超出了行數,但它可能不會影響你的表現。如果你想更精確一些,有數百篇關於如何查找範圍的最後一行的文章。至於Offset函數,它引用與正在循環的單元格相關的單元格。在下面的例子中,代碼是說cell.offset(0,1)這意味着我們當前正在循環的單元格右側的一個單元格。更明確的(!少多圈)的例子是,如果你鍵入:Range("A10").offset(0,1)這將是一樣的打字Range("B10")

Dim Cell As Range 

For Each Cell In Range("A2:A1000").Cells 
If Not IsEmpty(Cell) Then 
    Cell.Offset(0, 1).Value = Cell.Value 
End If 
Next Cell 
1

如果你正試圖填補頭的每個產品,試試這個...

Sub FillHeaders() 
Dim lr As Long 
Dim Rng As Range 
lr = ActiveSheet.UsedRange.Rows.Count 
Application.ScreenUpdating = False 
On Error Resume Next 
Range("A1:B1").Copy 

For Each Rng In Range("A3:A" & lr).SpecialCells(xlCellTypeConstants, 2).Areas 
    If Rng.Cells(1).Value <> Range("A1").Value Then 
     Rng.Cells(1).Offset(-1, 0).PasteSpecial xlPasteAll 
    End If 
Next Rng 
Application.CutCopyMode = 0 
Application.ScreenUpdating = True 
End Sub