2011-06-03 15 views
1

我想要做的是掃描一張紙上的每個標題(標題位於「1:1」),找到一個名爲「經銷商代碼「,然後將整個專欄複製到另一個工作表。Excel - 使用地址複製整個列包括空格

我目前的問題是經銷商代碼欄中有空白,所以停止選擇。我會從工作表的底部向上工作以避免這種情況,但由於標題單元格存儲在地址中,因此無法提取列字母。

有一種方法,我可以在我的選擇中包括空格,或者提取列字母並向上工作?

如果我非常不方便地處理問題,請告訴我!我想盡可能地學習。

以下是我的代碼。幫助將不勝感激。

'Copies over Dealer Codes 
With Sheets("Raw Data").Range("1:1") 
Set c = .Find("Dealer Code", LookIn:=xlValues) 
If Not c Is Nothing Then 
    firstAddress = c.Address 
    Do 
     Set c = .FindNext(c) 
    Loop While Not c Is Nothing And c.Address <> firstAddress 
End If 

Sheets("Raw Data").Range(firstAddress).Select 
Sheets("Raw Data").Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy (Sheets("Copied Data").Range("A1")) 
End With 

回答

1

嘗試是這樣的:

Sub Test() 
    With ActiveSheet.Range("1:1") 
    Set c = .Find("Dealer Code") 
    Dim column As String 
    column = Mid(c.Address, 2, 1) 
    Range(column & ":" & column).Select 
    End With 
End Sub 

這將選擇整列,但容易改變選擇從第2行中的元素到年底。既然你有空白,像Range(column & "2:" & column & Range(column & "65536").End(xlUp).Row).Select這樣的作品,但有點kludgey,我承認。

其他解決方案可能更優化。

+0

這似乎很好!謝謝! – AdamY 2011-06-06 11:57:50

+0

還有一個問題。如果我把代碼放在兩次,如下所示,我得到一個「對象變量或With塊變量未設置」,任何想法爲什麼? – AdamY 2011-06-06 11:59:15

+0

@AdamY您不需要使用With語句兩次,因爲它已經第一次設置了。你甚至可以使用'set c = ActiveSheet.Range(「1:1」)。找到(「Dealer Code」)並去除With/End With行(我看到的例子做了更多的操作在Range對象上,所以在這種情況下更有利)。 – jonsca 2011-06-06 12:10:42