如何解决在列和列中最后使用的单元格之间有空白单元格后,如何在 2 个单元格处求和?
如图所示,我有两列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 以便它从工作表底部向上搜索,以便找到真正的最后一个单元格。
解决方法
试试这个,看看它是否是你想要的。
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
这是另一个使用特定工作表名称的示例,没有 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。