1 Range().End() 或 cells().End() 屬性
1.1 單元格的end屬性
- 兩種寫(xiě)法都可以
- range().end()
- cells().end()
1.2 返回的內(nèi)容
- 返回一個(gè) Range 對(duì)象
- 該對(duì)象代表包含源區(qū)域的區(qū)域尾端的單元格。
- 等同于按鍵 (End+向上鍵、End+向下鍵、End+向左鍵、End+向右鍵)
- 或等同于CTRL+上下左右
2 使用詳解
2.1 詳細(xì)語(yǔ)法
- 表達(dá)式 一個(gè)代表 Range 對(duì)象的變量。(用數(shù)值1,2,3,4 代表也是可以的)
- 向左 xlToLeft -------1,實(shí)際使用時(shí),是以當(dāng)前range()為基點(diǎn),先左移一格,然后去找
- 向右 xlToRight -----2,實(shí)際使用時(shí),是以當(dāng)前range()為基點(diǎn),先右移一格,然后去找
- 向上 xlUp -----------3,實(shí)際使用時(shí),是以當(dāng)前range()為基點(diǎn),先上移一格,然后去找
- 向下 xlDown -------4,實(shí)際使用時(shí),是以當(dāng)前range()為基點(diǎn),先下移一格,然后去找
- 理解先偏移1格再找區(qū)域的意思
- 理解從“源區(qū)域” 作為起始點(diǎn),去找這個(gè) 源區(qū)域相連的使用區(qū)域的邊界
- 如果源區(qū)域 本身為空,會(huì)找一個(gè)相連的整塊空區(qū)域
Debug.Print Range('b5').End(xlUp).Row Debug.Print Range('b5').End(xlDown).Row Debug.Print Range('b5').End(xlToLeft).Column Debug.Print Range('b5').End(xlToRight).Column Debug.Print Range('b3').End(xlUp).Row Debug.Print Range('b3').End(xlDown).Row Debug.Print Range('b3').End(xlToLeft).Column Debug.Print Range('b3').End(xlToRight).Column
2.2 測(cè)試比較
- 查固定range()的范圍
- 查固定range(),但range()內(nèi)全部為空
- 查不確定的區(qū)域的范圍
Debug.Print Range('b:b').Rows.Count 'Debug.Print Range('b:b').maxrowCount Debug.Print Range('3:3').Columns.Count '返回一個(gè) Range 對(duì)象,它表示包含源范圍的區(qū)域末尾的單元格 Debug.Print Range('b1:b5').End(xlUp).Row Debug.Print Range('b1:b5').End(xlDown).Row Debug.Print Range('b1:b5').End(xlToLeft).Column Debug.Print Range('b1:b5').End(xlToRight).Column Debug.Print Range('d1:d5').End(xlUp).Row Debug.Print Range('d1:d5').End(xlDown).Row Debug.Print Range('d1:d5').End(xlToLeft).Column Debug.Print Range('d1:d5').End(xlToRight).Column Debug.Print Range('b:b').End(xlUp).Row Debug.Print Range('b:b').End(xlDown).Row Debug.Print Range('b:b').End(xlToLeft).Column Debug.Print Range('b:b').End(xlToRight).Column '比如查B列的上下限界。因?yàn)橹虚g可能有空格隔斷,所以得這么查 Debug.Print '查B列的上下限界,從列的開(kāi)始往下查,從列的末尾往上查' Debug.Print Range('b1').End(xlDown).Row Debug.Print Range('b65536').End(xlUp).Row '比如查3行的左右限界。因?yàn)橹虚g可能有空格隔斷,所以得這么查 Debug.Print '查第3行的左右限界,從行的開(kāi)始往右查,從行的結(jié)尾(盡量大的數(shù))往左邊查' Debug.Print Range('a3').End(xlToRight).Column Debug.Print Cells(3, 9999).End(xlToLeft).Column
2.3 查不確定區(qū)域的范圍的正確用法(不是從內(nèi)部查邊界,而是從4個(gè)外界去逼近邊界)
'比如查B列的上下限界。因?yàn)橹虚g可能有空格隔斷,所以得這么查 Debug.Print '查B列的上下限界,從列的開(kāi)始往下查,從列的末尾往上查' Debug.Print Range('b1').End(xlDown).Row Debug.Print Range('b65536').End(xlUp).Row '比如查3行的左右限界。因?yàn)橹虚g可能有空格隔斷,所以得這么查 Debug.Print '查第3行的左右限界,從行的開(kāi)始往右查,從行的結(jié)尾(盡量大的數(shù))往左邊查' Debug.Print Range('a3').End(xlToRight).Column Debug.Print Cells(3, 9999).End(xlToLeft).Column
3 總結(jié)
3.1 利用end() 查內(nèi)部的邊界
- 查一個(gè)連續(xù)區(qū)域內(nèi)的邊界,在區(qū)域內(nèi),用這些即可
- end(xlup)
- end(xldown)
- end(xltoleft)
- end(xltorigjt)
- 查一個(gè)連續(xù)區(qū)域內(nèi)部
3.2 利用end() 查外部的邊界(比如查某列最后一個(gè)非空單元格)
- 從外部逼近單元格,需要從 大的行列反過(guò)來(lái)逼近
- Range('a65536').End(xlUp)適合查整個(gè)sheet的某一列的最后一個(gè)有值得單元格。
4 新版EXCEL里,一般用rows.count 代替 a65536
- Range('a65536').End(xlUp).Row
- cells(rows.count,1).end(xlup).row
|