excel - 在下一个可见单元格上应用 VLOOKUP
问题描述
下面的代码执行 vlookup,然后自动填充数据,然后将过滤器应用于#N/A
. 在这里,我需要VLOOKUP
使用过滤器在同一列中执行另一个操作,#N/A
但我不确定这一点,因为我们如何选择下面的单元格F1
并应用于VLOOKUP
可见数据。你能帮我解决这个问题吗?
Sub Vlookup()
Worksheets("error rate").Activate
Range("F2") = "=Vlookup(B2,'sales'!B:C,2,0)"
Range("F2").Select
Range("F2").AutoFill Range("F2:F" & Range("B" & Rows.Count).End(xlUp).Row)
Range("F:F").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Range("B1").AutoFilter Field:=6, Criteria1:="#N/A"
Range = Rng.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 6)
End Sub
解决方案
一些事情
避免使用
Activate/Select
. 您可能想查看如何避免在 Excel VBA 中使用 Select定义和使用对象。使用您的代码变得更加容易。
无需在一个单元格中输入公式然后自动填充,只需在整个范围内一次性输入公式,如下所示。
我看到目标是获取所有值。那么就不需要输入公式,过滤和租用公式了。使用
IFERROR
和使用单个嵌套公式IF
。例如,如果公式"=Vlookup(B2,'sales'!B:C,2,0)"
没有给您结果,并且您想从说列中提取值,D
则使用公式=IFERROR(VLOOKUP(B2,Sales!B:C,2,0),VLOOKUP(B2,Sales!B:D,3,0))
。我只是嵌套VLOOKUP(B2,Sales!B:D,3,0)
在里面IFERROR()
。该公式的作用是检查是否存在错误,VLOOKUP(B2,Sales!B:C,2,0)
如果存在,则尝试使用VLOOKUP(B2,Sales!B:D,3,0)
代码
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long
'~~> Set this to the relevant sheet
Set ws = ThisWorkbook.Sheets("error rate")
With ws
'~~> Find last row
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
'~~> Work with the relevant range
With .Range("F2:F" & lRow)
'~~> Enter the formula in the entire range in one go
.Formula = "=IFERROR(VLOOKUP(B2,Sales!B:C,2,0),VLOOKUP(B2,Sales!B:D,3,0))"
'~~> OPTIONAL
'~~> Instead of copy and paste as values use this.
'.Value = .Value
End With
End With
End Sub
推荐阅读
- r - 使用 dplyr 跨列对 NA 求和
- python-3.x - 如何创建熊猫数据透视表?
- apache-spark - 以指定的 Linux 用户身份运行 Spark 执行器
- javascript - 如何停止 ajax 请求然后继续?
- chisel - Chisel 变量声明语法含义 rvs: Bool*
- java - 为什么我这里不能成功调用 .put 方法?
- laravel - 如何在具有关系 SUM 的 Laravel 模型上使用预先加载 - 当前正在获取多个查询 (N+1)
- python-3.x - ValueError:int() 的无效文字,基数为 10:'1309٫5'
- node.js - npm install 根据 node-semver 得到不同的版本
- web-scraping - 为什么我不能用scrapy将数据导入csv?