0

我正在尝试自动化我运行的月度报告。每个月,我都会运行一个查询(嵌入到单独的选项卡中),然后使用 vlookup 将值移动到当前月份的列中。

我想创建一个宏来移动当前月份的值,但我需要弄清楚的是如何修改宏来检查一个月的列是否已填写,如果是,则放入右侧列中的每月数字(下个月)。我已经对此进行了一段时间的研究,但是我的 VBA 经验很少,并且在遇到错误时会卡住。我知道我可以使用“IsEmpty”功能,但我不确定使用它的最佳方式。

这是宏的副本:

 Range("N6").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],'ENT - Query Totals'!C2:C4,3,FALSE)"
Range("N6").Select
ActiveWindow.SmallScroll Down:=-9
Range("N6").Select
Selection.AutoFill Destination:=Range("N6:N82"), Type:=xlFillDefault
Range("N6:N82").Select
ActiveWindow.SmallScroll Down:=-60
Range("N6:N82").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("O64").Select
Cells.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Sub

所以基本上,我想检查“N6”是否为空。如果是,宏将使用 vlookup 将数据从查询选项卡移动到“N”列。如果它不为空,我希望它将查询选项卡中的数据复制到“O”列等。

在我继续学习 VBA 的同时,任何帮助或指导将不胜感激

4

1 回答 1

0
Dim copyRange as Range
Dim rowNum As Long

Range("N6").FormulaR1C1 = "=VLOOKUP(RC[-10],'ENT - Query Totals'!C2:C4,3,FALSE)"
Range("N6").AutoFill Destination:=Range("N6:N82"), Type:=xlFillDefault

Set copyRange = Range("N6:N82").Select
rowNum = 64

For each cell in copyRange
    If Not IsEmpty(Range("O" & rowNum) Then
        cell.copy destination:=Range("O" & rowNum)
        rowNum = rowNum + 1
    Else
        cell.copy Destination:=Range("N" & rowNums)
        rowNum = rowNum + 1
    End if
Next cell

我觉得这与你要问的问题差不多,但你表达问题的方式让我有点困惑

于 2013-08-26T20:00:33.227 回答