excel - 如何根据月份检查单元格的范围/列并复制它们

标签 excel vba date copy range

所以本质上,我想做的是:

------A--------B-------C-------D------
1  Date       Weight   Misc     ID*
2  2014-06-12 210              445556
3  2014-07-13 150              546456
4  2014-08-14 265              546456 
5  2014-09-15 655              655654
6  2014-10-16 87               546656
7  2014-10-17 1552             545488
8  2014-11-18 225              546545

我有一个按钮,我希望它运行一个宏来检查 A 列中的日期是否在当月之内。我试过使用
Month(Date)

但它会检查整个日期,而不仅仅是月份。

如果列 A 中单元格中的月份等于当前月份,我希望它复制与该特定单元格对应的整行信息。例如:当当前月份是 11 月时,我希望它复制 A8+B8+C8+D8,然后我会将这些信息粘贴到一个完全不同的工作簿中。

请记住,我对 VBA 完全陌生,但这是我迄今为止提出的:
Sub dat()
Dim rng As Range
Dim dat As Date
dat = Month(Date)
For Each rng In Range("A2:A100")
If rng.Value = dat Then
Range("???").Copy
Range("A1").PasteSpecial
End If
Next
End Sub

什么都没有发生。如果我将其更改为 dat=Date 那么它只适用于这一天,并且需要永远运行 1000 个单元格。

我在想我是否可以以某种方式使用 Cells(Rows.Count, "A").End(xlUp).Value = Month(Date)。这甚至可能吗?

编辑: 要粘贴到不同的工作簿中,我使用了以下命令:
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\....DOCUMENT.xlsm")

然后粘贴:
wb.Sheets("Sheet1").Range("A" & NextDest & ":F" & NextDest).PasteSpecial

最佳答案

只需将“目标表”更改为要复制到的表的名称。

Sub dat()
    Dim LastRow As Long
    Dim CurRow As Long
    Dim NextDest As Long
    Dim ws As Worksheet

    Set ws = Sheets("SOURCE SHEET")
    LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row

    For CurRow = 2 To LastRow
        If IsDate(ws.Range("A" & CurRow).Value) = True Then
            If Month(ws.Range("A" & CurRow).Value) = Month(Date) Then
                ws.Range("A" & CurRow & ":D" & CurRow).Copy
                NextDest = Sheets("DESTINATION SHEET").Range("A" & Rows.Count).End(xlUp).Row + 1
                Sheets("DESTINATION SHEET").Range("A" & NextDest & ":D" & NextDest).PasteSpecial
                Else
            End If
        Else
            ws.Cells(CurRow, 1).Interior.Color = RGB(255,0,0)
        End If
    Next CurRow
End Sub

编辑:您的 DESTINATION SHEET 现在将在最后使用的行之后添加行。此外,代码将首先检查该值是否为日期,如果不是日期,则突出显示。

关于excel - 如何根据月份检查单元格的范围/列并复制它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973594/

相关文章:

excel - 代码在复制/粘贴为宏时运行,但在另存为加载项时不运行

arrays - 在两个数组中查找不匹配项并将不匹配项添加到列中的最后一个位置

MySQL 其中 DateTime 大于今天

python - 使用python检查Servicenow票证的年龄

excel - 如何在 Excel 中将 SUMIFS 放在一起以包含 OR?

vba - Excel VBA循环遍历所有工作表并更改工作表颜色

excel - 计算如何在 Excel 中最便宜地获得一定数量的积分

excel - 从另一个 Sub 调用/引用命名范围

MYSQL 在不存在的日期中返回零,并计算特定日期存在的行数

excel - 运行时错误 1004,应用程序定义或对象定义错误