我正在尝试自动执行我运行的月度报告。每个月,我运行一个查询(嵌入到单独的选项卡中),然后使用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的过程中,我们将非常感谢任何帮助或指导
答案 0 :(得分: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
我觉得这是在你所问的邻居的某个地方,但你说出问题的方式对我来说有点混乱