在列中最后使用的单元格和列之间有空白单元格之后,如何在 2 个单元格处求和?
How to do sum at 2 cell after the last used cell in column and column has blank cells in between?
Get Image Here
如图所示,我有 两列 J 和 K 在上次使用的单元格 之后的 两个单元格处求和,问题是有时 随机定向的空单元格 由于中间停止求和。
另外,J 列的总和单元格应该有绿色文本,K 列的总和单元格应该有红色文本。请将此包含到您的代码中,我不知道该怎么做。
我是 vba 的初学者,这只是我的第五天...
这是我到目前为止尝试过的...
起初,我认为求和很容易,只需找到列中最后使用的单元格,然后应用求和公式即可。所以我尝试了下面的代码...
Dim LastRow As Long
LastRow = Range("J2").End(xlDown).Row
Cells(LastRow + 2, "J").Formula = "=SUM(J2:J" & LastRow & ")"
然后我意识到我的情况不会那么容易。我发现当我玩宏时,总和已经完成,但只在单元格之间。所以,我尝试了我所有的编程知识,并考虑应用条件,如果单元格包含值,则将该值添加到变量,如果单元格为空,则移动到下一个单元格……但我不知道该怎么做。 .. 我仍然提供我尝试过的代码...
Sub SumData()
Dim sumOne As Long
Dim LastRow As Long
LastRow = Range("F2").End(xlDown).Row
sumOne = 0
Dim MyRng As Range
Set MyRng = ActiveSheet.UsedRange.Columns("F")
Dim cellRng As Range
Sum:
For Each cellRng In MyRng.Cells
If cellRng.Value <> "" Then
sumOne = sumOne + cellRng.Value
Cells(LastRow + 2, "F").Value = sumOne
GoTo Sum
End If
Range("A2").Select
Next
End Sub
使用上面的代码,我尝试使用 F 列中的数据进行练习,因此 F 列没有问题...
而且我认为会有更简单更好的方法来做到这一点
回答:
Simon 指导的问题: 要查找您使用 xlDown 的最后一行。这意味着它从第 1 行向下搜索,直到找到一个空单元格。您需要使用 xlUp,以便它从 sheet 的底部向上搜索,从而找到真正的最后一个单元格。
试一试,看看是不是您想要的。
Sub SumColumns()
Dim lRowJ As Long, lRowK As Long
lRowJ = Range("J" & Rows.Count).End(xlUp).Row
lRowK = Range("K" & Rows.Count).End(xlUp).Row
With Range("J" & lRowJ + 2)
.Value = Application.Sum(Range("J1:J" & lRowJ))
.Font.Color = vbGreen
End With
With Range("K" & lRowK + 2)
.Value = Application.Sum(Range("K1:K" & lRowK))
.Font.Color = vbRed
End With
End Sub
这是另一个使用特定 sheet 名称的示例,没有 With
并使用 RGB
作为颜色:
Dim lRowJ As Long, lRowK As Long, ws As Worksheet
Set ws = Sheets("Sheet1") 'Name of your sheet
lRowJ = ws.Range("J" & Rows.Count).End(xlUp).Row
lRowK = ws.Range("K" & Rows.Count).End(xlUp).Row
ws.Range("J" & lRowJ + 2).Value = Application.Sum(Range("J1:J" & lRowJ))
ws.Range("J" & lRowJ + 2).Font.Color = RGB(0, 150, 0)
ws.Range("K" & lRowK + 2).Value = Application.Sum(Range("K1:K" & lRowK))
ws.Range("K" & lRowK + 2).Font.Color = RGB(255, 0, 0)
Get Image Here
如图所示,我有 两列 J 和 K 在上次使用的单元格 之后的 两个单元格处求和,问题是有时 随机定向的空单元格 由于中间停止求和。
另外,J 列的总和单元格应该有绿色文本,K 列的总和单元格应该有红色文本。请将此包含到您的代码中,我不知道该怎么做。
我是 vba 的初学者,这只是我的第五天...
这是我到目前为止尝试过的...
起初,我认为求和很容易,只需找到列中最后使用的单元格,然后应用求和公式即可。所以我尝试了下面的代码...
Dim LastRow As Long
LastRow = Range("J2").End(xlDown).Row
Cells(LastRow + 2, "J").Formula = "=SUM(J2:J" & LastRow & ")"
然后我意识到我的情况不会那么容易。我发现当我玩宏时,总和已经完成,但只在单元格之间。所以,我尝试了我所有的编程知识,并考虑应用条件,如果单元格包含值,则将该值添加到变量,如果单元格为空,则移动到下一个单元格……但我不知道该怎么做。 .. 我仍然提供我尝试过的代码...
Sub SumData()
Dim sumOne As Long
Dim LastRow As Long
LastRow = Range("F2").End(xlDown).Row
sumOne = 0
Dim MyRng As Range
Set MyRng = ActiveSheet.UsedRange.Columns("F")
Dim cellRng As Range
Sum:
For Each cellRng In MyRng.Cells
If cellRng.Value <> "" Then
sumOne = sumOne + cellRng.Value
Cells(LastRow + 2, "F").Value = sumOne
GoTo Sum
End If
Range("A2").Select
Next
End Sub
使用上面的代码,我尝试使用 F 列中的数据进行练习,因此 F 列没有问题... 而且我认为会有更简单更好的方法来做到这一点
回答: Simon 指导的问题: 要查找您使用 xlDown 的最后一行。这意味着它从第 1 行向下搜索,直到找到一个空单元格。您需要使用 xlUp,以便它从 sheet 的底部向上搜索,从而找到真正的最后一个单元格。
试一试,看看是不是您想要的。
Sub SumColumns()
Dim lRowJ As Long, lRowK As Long
lRowJ = Range("J" & Rows.Count).End(xlUp).Row
lRowK = Range("K" & Rows.Count).End(xlUp).Row
With Range("J" & lRowJ + 2)
.Value = Application.Sum(Range("J1:J" & lRowJ))
.Font.Color = vbGreen
End With
With Range("K" & lRowK + 2)
.Value = Application.Sum(Range("K1:K" & lRowK))
.Font.Color = vbRed
End With
End Sub
这是另一个使用特定 sheet 名称的示例,没有 With
并使用 RGB
作为颜色:
Dim lRowJ As Long, lRowK As Long, ws As Worksheet
Set ws = Sheets("Sheet1") 'Name of your sheet
lRowJ = ws.Range("J" & Rows.Count).End(xlUp).Row
lRowK = ws.Range("K" & Rows.Count).End(xlUp).Row
ws.Range("J" & lRowJ + 2).Value = Application.Sum(Range("J1:J" & lRowJ))
ws.Range("J" & lRowJ + 2).Font.Color = RGB(0, 150, 0)
ws.Range("K" & lRowK + 2).Value = Application.Sum(Range("K1:K" & lRowK))
ws.Range("K" & lRowK + 2).Font.Color = RGB(255, 0, 0)