我是VBA的新手,感谢您为以下问题编写宏的帮助:
我正在制定流动性报告,因为供应商在规定的日期付款,我需要"移动"特定日期的所有交易。
实际上,我需要识别一个单元格(基于另一个单元格的值)并将之前的范围中的值相加并使用原始值清除单元格。
实施例: - CIT 1(单元格AA11)是供应商付款的日期 - 范围X10:Z10中的值必须在AA10中求和并从范围X10中清除:Z10
PS:CIT和因此移动范围"在CIT日期并不总是一样的。这取决于CIT定义的日历日。
答案 0 :(得分:0)
基于此,
Sub Sum_and_Clear()
Range("AA10")=Application.WorksheetFunction.Sum(Range("X10:Z10"))
Range("X10:Z10").Clear
End Sub
这将扫描第11行以查找CIT*
并对前3列进行求和并清除它们:
Sub test_giovannicalamai()
Dim Ws As Worksheet, _
LastCol As Integer, _
RgToSum As Range, _
CitCell As Range
Set Ws = ActiveSheet
With Ws
LastCol = .Cells(.Columns.Count, 4).End(xlToLeft).Column
For j = 9 To LastCol
If LCase(Left(.Cells(11, j), 3)) <> "cit" Then
Else
Set CitCell = .Cells(11, j)
Set RgToSum = .Range(CitCell.Offset(-1, -3), CitCell.Offset(-1, -1))
CitCell.Value = Application.WorksheetFunction.Sum(RgToSum)
RgToSum.Clear
End If
Next j
End With
End Sub