我试图找到给定工作表中包含数据的第一列,我在网上搜索中看到了各种公式,但我没有得到正确的值。我已经尝试过这个网站上的公式,但它不起作用。
http://www.vbaexpress.com/kb/getarticle.php?kb_id=418
有什么想法吗?
使用Range类的End属性;这类似于在活动单元格中按 Ctrl + 箭头键。就我个人而言,我发现UsedRange有点不可靠,因为您可能使用了与您要查找的范围无关的单元格(例如,您在A到D列中有一个表格,在E中有一些计算)。
Dim firstColumn as Long
If Range("A1") <> "" then
firstColumn = 1
Else
firstColumn = Range("A1").End(xlToRight).column
End If
这假设您可能在 A1 中有数据。如果没有,则首先对列而不是行执行相同的操作,在这种情况下使用单元格而不是范围:
Dim firstRow, firstColumn as integer
If Range("A1") <> "" then
firstColumn = 1
Else
firstRow = range("A1").End(xlDown).row
if Range("A" & firstRow <> "" then
firstColumn = 1
else
firstColumn = Cells(firstRow, 1).End(xlToRight).Column
End If
End If
嗯,这个很简单:
activesheet.usedrange.columns(1).column
这将为您提供我了解您要求的列号
Sub test()
Set MyRange = Range("C3:d12")
sRow = Application.Index(MyRange, 0, 1).Row
eRow = Application.Index(MyRange, 0, 1).Count + sRow - 1
Debug.Print sRow, eRow
End Sub