如何检查单元格是否是Excel列中的最后一个

我使用数据库结果填充表单。 我不知道结果会有多less行。 我想有一个可变数量的行,有像这样的表:

IF(this is the last row?, sum of previous cells, some value) 

有没有一个公式来确定这一行是最后一个? 我正在寻找一个不是VBA代码的Excel公式。 也许类似于LOOKUP或INDEX或OFFSET,我不知道。

你可以试试这个UDF:

 Function IsLastCellInRow(myCell As Range) As Boolean If IsEmpty(myCell) Then Exit Function If myCell.End(xlDown).Row = myCell.EntireColumn.Rows.Count Then IsLastCellInRow = True End If End Function 

该函数基本上检查给定单元格下面是否有非空单元格,并返回TRUE为FALSE。

然后你可以像这样使用这个UDF:

 =IF(IsLastCellInRow(Sheet1!A1),SUM(Sheet1!A:A), "Whatever") 

这将testing以查看一个单元格是否为空,一旦它find一个空单元格,并总结以前的单元格值并将其显示在空单元格中

 Sub Test2() Dim i As Integer Dim j As Integer i = 1 Do While Cells(i, 1).Value <> "" j = j + Cells(i, 1).Value i = i + 1 Loop Cells(i, 1).Select Cells(i, 1).Value = j End Sub 

这个小组通过在底部添加总和来加起来。

 Sub ColumnAutoTotal() ' Dim iStartRow As Integer Dim iEndRow As Integer Range("A2").Select ' This cell is the first cell in the column that you want to add. The TOP Cell iStartRow = ActiveCell.Row Selection.End(xlDown).Select iEndRow = ActiveCell.Row Cells(iEndRow + 1, ActiveCell.Column).Select 'Set the total formula ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - iStartRow & "]C:R[-1]C)" End Sub 

你可以把它写成一个函数,并传递单元格“A2”或其他单元格。 这使用内置的“Selection.End”,避免了循环的需要。

如果你想要在单元格中input公式,请selectCtrl + Down(必要时重复该列中的所有单元格都不会填充),Down应该可以工作,但是一种解决方法是将其他地方的总计放在一起like =Sum(A:A) 。 或者,如果在最近的Excel版本中并且求和整个公式,那么避免使用循环引用,例如=SUM(A2:A1048576)