1、End屬性是單元格對象Range的屬性,它返回工作表中(行列)的最后一個非空單元格,并常常用來構(gòu)建動態(tài)的單元格數(shù)據(jù)范圍。 如,工作表中只有A1:C13是數(shù)據(jù)區(qū)域。此時該工作表的最后一個非空單元格的相關信息可以用End屬性來獲取。 A列最后一個非空單元格地址:返回 : "$A$13"
Range("a1048576")表示單元格 A1048576,而End是屬于Range單元格對象的屬性。 可以說白一點:Range("a1048576").End(xlUp)就是以單元格 A1048576 為基點,從 【A1048575 開始】 (A1048576即使非空也不在查找范圍內(nèi))在同一列(A列)往上查找,找到第一個非空單元格就停止,并返回該單元格。所以上面的代碼,返回的是A13單元格。 如將代碼改為:Range("a20").End(xlUp).Address,返回同樣結(jié)果。 原因只不過是,一個從A1048575開始,一個從A19開始,雖然基點不同,但往上查找到的第一個非空單元格都是A13。 即使單元格A20非空,也不算數(shù)。如下: 2、既然可以往上查找,那就同樣可以往下、往左、往右查找。 在寫代碼的時候,就有提示: xlup上; xldown下; xltoleft左; xltoright右 它們的相同點是,作為基點的單元格都不算。 在數(shù)據(jù)比較規(guī)范的時候,無論是xlup還是xldown,都能得出同樣的結(jié)果。 假如,A16單元格非空,那么上圖兩句代碼返回的結(jié)果將不一樣。 xlup:向上找,找到第一個非空單元格就停止。 xldown:向下找,遇到空單元格就停止。 xltoleft和xltoright同理。 下列代碼返回規(guī)范數(shù)據(jù)情況下(只A1:C13有數(shù)據(jù))當前活動工作表的數(shù)據(jù)范圍的相關信息。 假如,當前的數(shù)據(jù)表格需每天更新數(shù)據(jù)(添加行),該動態(tài)單元格范圍一般可以這樣表示: Range("a1:c" & 數(shù)值變量) 或 Range("a1",單元格變量),如下面代碼都可以表示單元格A1:C13
當數(shù)據(jù)自動增加的時候,單元格范圍會自動增加。如新增3行數(shù)據(jù)。請看gif演示。 4、Excel版本問題造成的錯誤。 Excel03版只有65536行,Excel07版后有1048576行,所以Range("a1048576")在03版中會出錯。 所以通用的寫法是:Cells(Rows.Count, 列)或Cells(行, Columns.Count)來代替Rang對象。 下圖中,Rows.Count在03版是65536,在07版或以上是1048576,再也不擔心版本問題而出錯。 【小練習】提取唯一值(去重復) 要求:將A列的英雄姓名去除重復值,提取唯一值到D列。 此題目可以用菜單欄的刪除重復值操作(或字典)來實現(xiàn)更簡單,但這里使用的是循環(huán)的方法。
|
|