我的数据表中的单元格数量每周都在变化,因此我使用count函数来确定带有数据的单元格数,然后将该计数用作放入我的范围的变量(单元格(x,x),单元格(x,x)可以选择。但我遇到了计数并将其转换为要使用的变量的问题。这是我正在为我正在做的其他事情整理的基本宏。
if((intent.getSerializableExtra(FILTER)) == null)
filter= false;
else
filter= intent != null && (boolean) intent.getSerializableExtra(FILTER);
答案 0 :(得分:0)
我认为您在尝试将列号作为正确的字母时遇到了麻烦,对吧?尝试这样的事情:
Sub Test()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws As Worksheet
Set ws = wb.Sheets("Sheet1") '(replace with whatever sheet name is)
Dim lastRow as Integer, lastCol as Integer, lastColLet as Integer
'get the number value of the last row and column
lastRow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lastCol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
'uncomment the debug.print statements to see what it's getting for last row/column
'Debug.Print lastRow
'Debug.Print lastCol
'get the letter that the column number corresponds to
lastColLet = Letter(lastCol)
'Debug.Print lastColLet
ws.Range("A1:" & lastColLet & lastRow).Select
End Sub
Function Letter(ByVal lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Letter = vArr(0)
End Function
它使用此处的函数:Function to convert column number to letter?以便将列#转换为字母,然后您可以将字母和最后一行连接起来以选择所需的方式。
答案 1 :(得分:0)
我猜您真正的问题是决定actually
需要选择的单元格
你的方法假设最左边的数据单元总是在单元格(1,1)中,右下方的数据单元格在以下的交集中:
如果是这种情况,那么您可以继续使用代码,前提是您将x = LasRow
更改为x = LastRow
...
不应该是那种情况,那么你可以假设范围是由:
分隔的范围第1列中的第一个非空行,第1行中的第一个非空列
第1列中的最后一个非空行,第1行中的最后一个非空列
然后你可以使用这段代码:
Function GetData() As Range
Dim firstRow As Long, firstColumn As Long
Dim LastRow As Integer, lastColumn As Long
With ActiveSheet
firstRow = .UsedRange.Rows(1).Row '<--| get first used row index
firstColumn = .UsedRange.Columns(1).Column '<--| get first used column index
LastRow = .Cells(.Rows.Count, firstColumn).End(xlUp).Row '<--| get the first used column last non empty cell row index
lastColumn = .Cells(firstRow, .Columns.Count).End(xlToLeft).Column '<--| get the first used rows last non empty cell column index
'return the range
Set GetData = .Range(Cells(firstRow, firstColumn), Cells(LastRow, lastColumn))
End With
End Function
并在主代码中利用它,如下所示:
Sub format_table()
With GetData '<-- use With-End With block to reference wanted object (Range) and avoid Select/Selection/Activate/ActiveXXX
'format the referenced range
.Font.Name=..
.Interior.Color=..
End With
End Sub
但GetData()函数可能仍然不是你需要的,如果数据在列和/或行中“锯齿”,第一行/列没有托管最后一列/单元格
所以也许你只需要:
Sub format_table()
With ActiveSheet.UsedRange
'format the referenced range
' .Font.Name=..
' .Interior.Color=..
End With
End Sub