我是VBA的全新产品。到目前为止,我的腰带已经有4个星期了。这是完成报告数据清理和分析的宏列表的最后一部分。也许这不是最好的办法吗?我仍然对此感到陌生,所以我愿意接受其他建议。但它需要是一个宏观。这基本上是什么样子(突出显示的字段中填充VLOOKUP,这就是为什么我有两个不同的阵列,因为他们不是连续的):数组范围和IsEmpty如果然后声明VBA。覆盖所有内容而不是有选择地插入
的行数取决于变化报告。有时它的4000行,有时更多,有时更少。但是我确信每一列都是一样的。我们试图尽可能地自动化,以便我们能够让一些技术含量较低的人员能够贯穿整个过程。我第一次经历这个过程花了6个小时(尽管我也是在记笔记)。对于这里的高级人员来说,每个人需要大约2小时,具体情况取决于。在年底之前,我们有大约300个这样的领域。
无论如何,这段代码可以工作,但它会覆盖我插入的所有iferror/vlookup结果。我猜我的'For If If Then'的声明是怪罪。但是我一直在研究这个问题几天,尝试不同的方法来实现这个目标,而且这是我最接近的。任何帮助将不胜感激。我敢肯定它的东西超级简单...
Sub AutomateAllTheThings6()
Dim arr3() As String
Dim arr11() As String
Dim rng3 As Range
Dim rng11 As Range
Dim sourcerng As Range
Dim lastRow As Long
Call OptimizeCode_Begin
lastRow = Range("D1:D" & Range("D1").End(xlDown).Row).Rows.Count
Set rng3 = ActiveSheet.Range("BH2:BJ2" & ":BH" & lastRow)
Set rng11 = ActiveSheet.Range("BL2:BV2" & ":BL" & lastRow)
Set sourcerng = ActiveSheet.Range("BE2:BF2" & ":BE" & lastRow)
arr3() = Split("UNKNOWN,UNKNOWN,UNKNOWN", ",")
arr11() = Split("UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 00/00/0000, 00/00/0000, 00/00/0000, 00/00/0000, NEEDS REVIEW", ",")
For Each cell In sourcerng
If IsEmpty(cell) Then
rng3.Value = arr3
rng11.Value = arr11
End If
Next
Call OptimizeCode_End
End Sub
的范围是错误的:'范围( “BH2:BJ2” & “:BH” &LASTROW)'应该用'范围( “BH2:BJ” &LASTROW)'等 –
1.阅读全部@Scott Craner的评论2.把它们变成答案3. ??? 4.利润! – Excelosaurus
例如:如果按下Ctrl + G并在immedate窗口中输入以下内容:debug.Print ActiveSheet.Range(“BH2:BJ2”&“:BH”&3)。地址 你得到$ BH $ 2:$ BJ $ 3,这是一个用3代替lastRow的例子,但是显示了实际发生的事情 – QHarr