(1,3) | 1:00 AM | 1:00 AM | ||||
2 B | (2,4) | 2 B | ||||
(3,3) | 3 C | (3,5) | ||||
https://www.jianshu.com/p/49b24de9bab6
很多人喜欢用的经典用法,但很少人知道原理,下面有详细的分析
Sub jackma11()
Debug.Print Cells(2, 4).End(xlToLeft).Column
Debug.Print Cells(2, 4).End(xlToRight).Column
Debug.Print Cells(2, 4).End(xlUp).Row
Debug.Print Cells(2, 4).End(xlDown).Row
End Sub
Sub jackma11()
Debug.Print Cells(3, 5).End(xlToLeft).Column
Debug.Print Cells(3, 5).End(xlToRight).Column
Debug.Print Cells(3, 5).End(xlUp).Row
Debug.Print Cells(3, 5).End(xlDown).Row
End Sub
Sub jackma11()
Debug.Print Cells(1, 3).End(xlToLeft).Column
Debug.Print Cells(1, 3).End(xlToRight).Column
Debug.Print Cells(1, 3).End(xlUp).Row
Debug.Print Cells(1, 3).End(xlDown).Row
End Sub
Sub jackma11()
Debug.Print Cells(3, 3).End(xlToLeft).Column
Debug.Print Cells(3, 3).End(xlToRight).Column
Debug.Print Cells(3, 3).End(xlUp).Row
Debug.Print Cells(3, 3).End(xlDown).Row
End Sub
Sub jackma11()
Debug.Print Range("c65536").End(3).Row
End Sub
原始数据
(1,3) | 1:00 AM | 1A | |||
2 B | (2,4) | 2 B | |||
(3,3) | 3 C | (3,5) | |||
Sub jackma101()
'这样取的边界是不对的
Debug.Print Range("c7:e9").End(1).Column
Debug.Print Range("c7:e9").End(2).Column
Debug.Print Range("c7:e9").End(xlUp).Row
Debug.Print Range("c7:e9").End(xlDown).Row
Debug.Print ""
'这样也不是取的 range的正确边界
Debug.Print Range("c7:e9")(1, -1).End(1).Column
Debug.Print Range("c7:e9").End(2).Column
Debug.Print Range("c7:e9")(-1, 1).End(xlUp).Row
Debug.Print Range("c7:e9").End(xlDown).Row
Debug.Print ""
'range的偏移,其实就是左上角单元格cell的偏移
'(1,1) 不偏移,(2,1)往下偏移1格,(0,1)往上偏移1格,(-1,1)往上偏移2格
'(1,1) 不偏移,(1,2)往右偏移1格,(1,0)往左 偏移1格,(1,-1)往上偏移2格
Debug.Print Range("c7:e9")(0, 1).Row
Debug.Print Range("c7:e9")(0, 1).Column
Debug.Print Range("c7:e9")(1, 0).Row
Debug.Print Range("c7:e9")(1, 0).Column
Debug.Print ""
'这样才是取的 range的正确边界,都用xltoright 和 xldown
Debug.Print Range("c7:e9")(1, 0).End(xlToRight).Column
Debug.Print Range("c7:e9").End(xlToRight).Column
Debug.Print Range("c7:e9")(0, 1).End(xlDown).Row
Debug.Print Range("c7:e9").End(xlDown).Row
Debug.Print ""
End Sub