有两个工作表,其中一个包含日期范围("Test"另一张包含付款金额和具体日期("付款信息")。表)。
我编写了代码,在第二张表中逐行执行,并根据两张表中存在的供应商值检查日期是否落在第一张表中的日期范围之间。
我卡住的地方:
付款金额包含货币格式,例如€,$或其他。如果我使用类似下面的代码—它保留了格式,但是:"Test"表单,可能需要包含来自"付款信息"的多行之和。并复制粘贴替换值。
ThisWorkbook.Sheets("Payment information").Cells(i, "F").Copy
ThisWorkbook.Sheets("Test").Cells(last_row, j).PasteSpecial xlPasteValuesAndNumberFormats
如果我使用下面的代码-格式下降:
payment_amount = ThisWorkbook.Sheets("Payment information").Cells(i, "F")
ThisWorkbook.Sheets("Test").Cells(last_row, j).value = ThisWorkbook.Sheets("Test").Cells(last_row, j).value + payment_amount
根据我的理解,您可以执行PasteSpecial xlformats来复制这些。
从
开始Range("A1").Copy
Range("A2").PasteSpecial xlFormats
以你为例:
ThisWorkbook.Sheets("Payment information").Cells(i, "F").Copy
ThisWorkbook.Sheets("Test").Cells(last_row, j).PasteSpecial xlFormats
从你下面的评论中补充,你应该使用一个变量,当它满足条件时增加值。
例如
Dim payment as Integer
Select case Range("A2").Value
Case #1/1/2022# To #12/31/2022#
payment = payment + Range("A2")
Case else
payment = Range("A2").Value
所以代码是这样的:如果它恰好是在2022年,它将值添加到变量中。如果不是2022,它复制值
然后您可以粘贴/显示您想要的范围内的值,如:
Range("A2").Value = payment
结合迭代来检查日期,它应该可以工作。
希望有帮助!