我被我正在使用的 Vlookup 公式困住了。我需要将 vlookup 公式应用于整个列,但这里有个陷阱 - 如果返回错误,我需要公式不执行任何操作。如果 Vlookup 不起作用,我需要保留单元格中的值。所以我不想要“N/A”,如果它之前不是空白的,我不能让它返回空白,我需要它保留原始单元格值,或者如果它之前是空白的并且 Vlookup 无法对其进行操作,则将其保留为空白。有人知道怎么做吗?
这是我的 vlookup:VLOOKUP(B8,'Pd Rollers'!$F$9:$J$427,3,FALSE)
我尝试过这些公式的几种变体,但都无法使其正常工作:
=IFERROR(VLOOKUP(B8,'Pd Rollers'!$F$9:$J$427,3,FALSE),cell("内容"))
IF(错误 = VLOOKUP(C3,'Pd Rollers'!$F$9:$J$427,4,FALSE),CELL("内容"),VLOOKUP(C3,'Pd Rollers'!$F$9:$J$427,4,FALSE))
任何帮助都将不胜感激,谢谢!
答案1
您对第一个例子的看法是正确的,=IFERROR(VLOOKUP(B8,'Pd Rollers'!$F$9:$J$427,3,FALSE),cell("content"))
(除了它应该是contents
(复数)与content
)。
要使其工作,您必须做两件事。首先是添加对函数的引用CELL()
。假设您的公式在 A1 中。那么该组件将是CELL("contents
,A1)`。
但要使它起作用,就必须启用迭代计算,这样循环不会导致计算失败,单元格中就会出现“0”。在 Excel 的常规设置中执行此操作: File|Options
选择Formulas
区域,然后立即在顶部右侧选中复选框Enable iterative calculation
,然后设置Maximum Iterations
为“1”(特别是“1”,而不仅仅是某个小的或接近的数值……确切地说是“1”)。
不过,您必须运行公式,以便它具有可接受的起始值,否则输入公式时弹出的任何值都将是保留值。因此,基本上,成功运行查找,然后将其发送给您自己或您的用户,让他们对所需的任何值运行它。
任何成功都会被保存,直到细胞公式的新用途产生新的成功。因此,保存直到产生新的合适东西,然后它本身将被保存直到……等等。
(请注意,这适用于您的场景,即单元格中有一个公式,即查找公式。如果单元格中有一个值(Excel 称之为“常量”),如“蓝色”,而不是公式,则上面的公式不会保留它。但这样你就有了简单函数的组件,IFFERROR()
不需要跳过这些麻烦,所以这并不重要。)
当然,以这种方式更改基本设置对于大多数人来说都相当重要,并且经常会在使用完电子表格后忘记更改设置,从而产生连锁反应。我不知道是否可以通过 VBA 更改此设置,但如果可以,则最好添加一个在打开文件时运行以设置它的宏和一个在关闭文件时运行以重置它的宏。如果可以设置,这些宏应该非常容易编写。它甚至可能通过宏记录器提供,因此除了制作宏之外不需要任何 VBAOn Open
知识On Close
。
测试了宏记录器,这是在更改我的设置以测试您的最终公式后重置我的设置的输出:
Sub Macro1()
'
' Macro1 Macro
'
'
With Application
.Iteration = False
.MaxIterations = 100
End With
End Sub
显然,设置它只需使用True
for.Iteration
和1
for .MaxIterations
。