首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vba保留上一个单元格值,如果vlookup返回N/A,则跳过

VBA(Visual Basic for Applications)是一种用于宏编程的编程语言,常用于Microsoft Office套件中的应用程序,如Excel、Word和Access等。在VBA中,可以使用一些技巧来保留上一个单元格的值,并在VLOOKUP函数返回"N/A"时跳过。

要实现这个功能,可以使用一个变量来存储上一个单元格的值,并在每次执行VLOOKUP函数之前更新该变量。如果VLOOKUP函数返回"N/A",则可以使用条件语句来跳过该操作。

以下是一个示例代码:

代码语言:txt
复制
Sub ReservePreviousCellValue()
    Dim previousValue As Variant
    Dim lookupResult As Variant
    
    ' 获取上一个单元格的值
    previousValue = ActiveCell.Offset(-1, 0).Value
    
    ' 执行VLOOKUP函数
    lookupResult = Application.VLookup(ActiveCell.Value, Range("A1:B10"), 2, False)
    
    ' 检查VLOOKUP结果是否为"N/A"
    If IsError(lookupResult) Then
        ' 如果是"N/A",则跳过操作
        Exit Sub
    End If
    
    ' 更新上一个单元格的值
    previousValue = ActiveCell.Value
End Sub

在上面的示例中,首先定义了一个变量previousValue来存储上一个单元格的值。然后使用Offset方法获取当前单元格的上一个单元格的值,并将其赋给previousValue变量。

接下来,使用Application.VLookup函数执行VLOOKUP操作,并将结果存储在lookupResult变量中。使用IsError函数检查lookupResult是否为错误值,如果是"N/A",则使用Exit Sub语句跳过后续操作。

最后,将当前单元格的值更新到previousValue变量中,以备下次循环使用。

这是一个简单的示例,你可以根据实际需求进行修改和扩展。同时,腾讯云也提供了一些与Excel相关的产品和服务,例如云数据库CDB、云函数SCF等,你可以根据具体需求选择适合的产品。更多关于腾讯云产品的信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel VBA解读(146): 使用隐式交集处理整列

图1 在单元格B6中输入公式: =A:A 并不会返回整列A,而是返回第6行与列A相交的单元格f。...同样,如果单元格区域A1:A15命名为myCells,那么在单元格B13中输入: =myCells 并不会返回A1:A15中的全部,而是返回myCells与第13行的交叉单元格A13中的m。...例如,VLOOKUP函数通常使用单个或引用作为要查找的,使用单元格区域作为查找表。...例如,公式: =VLOOKUP(A4,$A:$C,3,false) 在列A至列C组成的区域中精确查找单元格A4中的内容,并返回列C中相应的。...如果单元格区域作为要查找的,并且输入的不是数组公式: =VLOOKUP($A:$A,$A:$C,3,FALSE) 那么Excel将为查找使用隐式交集,上面公式的结果如下图5所示。 ?

4.9K30

Excel无所不能的XLOOKUP,XLOOKUP函数不同场景的应用方法

,此技巧对VLOOKUP和LOOKUP而言算不上什么伤害,因为常规大家写完公式都会下拉公式填充,都一样可以查找出多个字段。...XLOOKUP函数也可以兼容通配符查找,不过XLOOKUP函数查找的通配符遇到多个结果时返回的是第一个结果。...(G4,C4:C11,B4:B11) 第三轮如果是从公式的理解和长短上来评价,XLOOKUP胜!...1,0/(C4:C11=H4),(D4:D11)) Xlookup见状时间不多也没保留,直接在I4单元格中写下公式=Xlookup(H4,C4:C11,D4:D11,0,-1) 到此六个回合的PK就结束了...最后给大家分享一下低版本Office的同学如果不想升级软件,可以使用VBA自定义一个XLOOKUP函数哦,方法如下: VBA自定义XLOOKUP函数

59350
  • Excel实战技巧53: 在VBA代码中使用工作表公式更有效地实现查找

    excelperfect 在工作表中查找是很常见的操作,我们可以使用VLOOKUP函数、MATCH函数、INDEX函数等来查找。...下图1所示的工作表,要在列G中查找列A中的如果找到则将G列中相应行对应的列H中的复制到列A中相应行的列B中。 ?...图1 例如,单元格A2中的“砖基础”与单元格G3中的相同,则将单元格H3中的复制到单元格B2中,如下图2所示。 ? 图2 首先,定义一个动态名称,以便列G中添加项目时能够自动更新。...lRow = Application.WorksheetFunction. _ Match(rngValueA, [LookupRange], 0) +1 '如果找到进行相应的操作...说明:本文的例子只是演示公式在VBA中的运用。其实,本例在工作表中使用VLOOKUP函数也很容易。

    2.7K20

    常用功能加载宏——单元格数字与文本转换

    1、数字的两种存储格式 要判断一个数字是常规的数字还是文本,最简单的判断是: 默认单元格是常规的格式下,如果数字是靠右边对齐的,那么它就是常规的数字,如果是靠左边对齐的,那么就是文本。...如果数字存储格式是文本,单元格左上角会有一个绿色的小三角,选中这个单元格后,还会出现一个“!”,点击这个“!”可以把数字转换为常规的数字。 ?...但是在某些函数使用的时候,比如VLookup函数,如果要查找的数据和查找范围内的数据是不同存储格式,VLookup函数会返回错误。...很多新手就会用Ctrl+F的查找框去查找,然后会非常不理解VLookup函数,明明看见用Ctrl+F的查找框能找到的东西,函数却返回错误!...文本形式存储的数字也有它的用处,比如身份证号码,如果以常规形式输入的话,你会发现超过了15位后,数字都变为了0,这是因为Excel只能保留16位的有效数字,所以要存储超过了15位的数字,就必须使用文本格式

    2K10

    VBA实现Excel函数01:VLOOKUP

    VBA里的参数修饰符Optional,和这个是同样的意思,可以省略的参数,如果省略了,就是用默认的,在我们的定义里,默认等于0. 返回:Variant,可以返回任意数据类型的。...就可以返回并提前退出了 Exit Function End If Next 其实完成这个循环代码后,如果一切输入正常的话,这个函数已经可以运行了,我们测试一下..."Excel Vlookup返回", ret End Sub 输出: MyVlookup返回 72848 Excel Vlookup返回 72848...我们继续完善一下,没有找到需要的的时候,我们让它返回#N/A,所以,我们只需要在For循环之后加上一条语句: MyVlookup = "#N/A" 因为一旦找到了查找的,For循环内部就会Exit...假如我们的table_array的赋值语句不是通过单元格来的,是我们自己定义的1个1维数组呢?如果你仔细看了上面说的取数组下标的情况,你能知道这时候又会出错了。

    7.3K31

    Excel实战技巧:基于单元格显示相应的图片

    标签:Excel实战,INDEX函数,MATCH函数,定义名称,VBA 选择零件号,显示相应的零件图;选择员工姓名,显示该员工相片,等等,都是选择单元格中的而显示相应的图片的例子,也就是说基于单元格查找并显示对应的图片...,单元格改变,图片也自动改变。...这样,在单元格D2中选择国家名称,在单元格E2中将显示该国家的国旗图片。 当然,如果使用Microsoft 365,那么还可以使用新的XLOOKUP函数来编写查找公式。...方法2:使用图表填充+#N/A 与上面相同,在单元格D2中创建数据验证列表,可以在下拉列表中选择国家名。 首先,创建一个将所选国家计算为1,其他国家计算为#N/A的公式。如下图4所示。...图4 可以看到,在单元格B2中的公式为: =IF(VLOOKUP(A2,D2,1,0)=A2,1,NA()) 如果单元格D2中的与列A中相应的相同,公式返回1,否则返回#N/A。

    9.1K30

    【学习】Vlookup、Lookup都靠边,Mlookup函数来了

    Vlookup是最常用到的查找函数,但它有很大的局限性。比如:只能查找第一个符合条件的,无法任意位置查找和多条件查找等。于是,兰色用VBA编写了一个功能强大的Mlookup函数。...一、用法介绍 =Mlookup(查找内容,查找区域,返回所在的列数,第N个) 语法说明: 查找内容:除了单个外,还可以选取多个单元格,进行多条件查找。...查找区域:同VLOOKUP 返回的在列数:同VLOOKUPN个:为1就返回第1个符合条件的,为2就返回第2个符合条件的....当值为0时,返回最后1个符合条件的。 二、功能演示。...1、按alt+F11(键盘上如果有FN键 ,还需要同时按FN)会打开VBE窗口,在窗口中点插入 - 模块。把下面的代码复制粘贴到右侧的空白区域中。 ?...cc, sr As String arr1 = rg.Value ARR2 = rgs If VBA.IsArray(arr1) Then For Each R In arr1 If R "" Then

    2.5K81

    Vba菜鸟教程

    单元格输入公式 利用单元格公式返回 调用工作表函数 利用vba函数 自定义函数 操作对象 类模块 excel应用对象 操作工作簿 操作工作表 操作单元格 图形对象 事件 关闭事件 工作簿事件...需要重定义才能加变量,Preserve保留原本有的,只改大小 dim arr(1 to 20) arr = Range("A1:D9") '给数组赋值 Range("A11") = arr(7,2...Sub 利用vba函数 Sub test() 'E在A22单元格的位置,没有返回0 Range("A1") = VBA.String.InStr(Range("A22"), "E")...,文件不存在返回空,可以使用通配符*,匹配到多个文件时,返回一个,继续使用dir不带参数,返回下一个,没有了返回空,再使用dir报错 str = Dir("E:\code\exce_vba\*....单元格引用,作为一个 Range 对象 16 错误,如 #N/A 64 数值数组 GetOpenFilename打开文件 GetOpenFilename (文件类型,优先类型,对话框标题,按钮文字[

    17.1K40

    数据地图系列9|excel(VBA)数据地图!

    将F9:G13单元格区域选中并定义名称为color_table ? 使用concatenate函数制作分段范围。 将D9-D13区域的五个单元格分别命名为color1~color5。...然后将提前准备好的地图填充色复制进D9-D13单元格中。 7、在C4列中匹配B列指标值的颜色范围。(使用vlookup函数) ?...C" & i).Value).Interior.Color '对各省的图形使用其颜色栏的作为名称所指向的单元格的颜色填充 Next i Application.ScreenUpdating...当然,如果你想更换填充效果的话,可以在五个颜色栏中复制入自己准备好的颜色。 记得在地图做完之后一定要使用分档阀值区域作为图例引用在数据地图周围。...还有一点需要提示一下,这种内涵VBA宏代码的文件需另存为xlsm格式才能保留宏功能,否则就会前功尽弃。

    5K60

    错误不可怕,就看你如何使用ISNA函数

    ISNA函数 Excel ISNA函数用于检查单元格或公式是否存在N/A错误。结果是一个逻辑如果检测到#N/A错误,则为TRUE,否则为FALSE。...ISNA函数的语法为: ISNA(value) 其中,value是要检查#N/A错误的单元格或公式。...使用ISNA函数的基本公式示例: =ISNA(A2) 如果单元格A2包含#N/A错误,返回TRUE,如果出现任何其他错误、或空白单元格返回FALSE。如下图1所示。...要将A2中的与列D中的每个进行比较,公式为: =MATCH(A2,D2:D9,0) 如果找到查找,MATCH函数将返回其在查找数组中的相对位置,否则将发生#N/A错误。...带有VLOOKUP函数的ISNA函数的语法如下: IF(ISNA(VLOOKUP(…),“自定义文本”,VLOOKUP(…)) 也就是说:如果VLOOKUP导致一个#N/A错误,返回自定义文本,否则返回

    9.1K20

    基于单元格查找并显示图片

    标签:Excel技巧,VBA 之前的文章中介绍过这个技巧,这是在mcgimpsey.com中看到的,也辑录于此,供参考。 一图胜千言。...在Excel中,可以在一个单元格中显示一张根据另一个单元格的信息而变化的图片。...由于Excel中的图片不能放在单元格中,而是浮在工作表顶部,并且由于查找函数返回的是,而不是图片,因此需要一些VBA代码来模拟查找图片并将其放置在单元格中。...图1 图片放在工作表Sheet1的任何位置,在图片所在的单元格F1中,输入以下公式: =VLOOKUP(A2, PicTable, 2, False) 然后,在该工作表Worksheet_Calculation...VBA代码隐藏所有图片,然后显示与F1中的相对应的图片,必要时重新定位。

    32710

    VLOOKUP 函数使用手册: 要注意查找的格式与 lookup_value 的格式要一致

    如果 col_index_num 小于1,函数 VLOOKUP 返回错误 #VALUE!...Range_lookup为一逻辑,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为FALSE或0 ,返回精确匹配,如果找不到,返回错误 #N/A。...如果 rangelookup 为TRUE或1,函数 VLOOKUP 将查找近似匹配,也就是说,如果找不到精确匹配返回小于 lookupvalue 的最大数值。...例如,如果我们想这样来作处理:如果找到的话,就传回相应的如果找不到的话,就自动设定它的等于0,函数可以写成这样: =if(iserror(vlookup(1,2,3,0)),0,vlookup(...,如果不是,返回value表达式自身的

    4.2K30

    Excel 函数之查找和引用函数

    =HLOOKUP(查找的数值, 要查找区域,区域中行序号,匹配方式) 例1,以首行的字符为条件,查找引用已知的行号(序号)的数据 VLOOKUP函数 VLOOKUP函数用于搜索某个单元格区域的第一列,...然后返回该区域相同行上任何单元格中的。...=index(array,row_num,column_num) =INDEX(查找区域,行号,列号) ★MATCH函数用于在单元格区域中搜索指定项,然后返回该项在单元格区域中的相对位置。...如果lookup_array的均小于或等于lookup_value,返回数组最后一个的位置;如果lookup_array的均大于lookup_value,返回#N/A。...如果lookup_array的均大于或等于lookup_value,返回数组最后一个的位置;如果lookup_array的均小于lookup_value,返回#N/A。

    1.5K20

    VBA数组用法案例详解

    mylook()Dim arrarr = [{"a",10;"b",20;"c",30}]Range("a1:b3") = arrMsgBox Application.WorksheetFunction.VLookup...("b", arr, 2, 0)  '调用vlookup时可以作为第二个参数End Sub '动态数组的定义方法Sub arrDemo5()Dim arr1() '声明一个动态数组(动态指不固定大小)Dim...arr2  '声明一个Variant类型的变量 arr1 = Range("a1:b2")   '把单元格区域A1:B2的装入数组arr1arr2 = Range("a1:b2")   '把单元格区域...A1:B2的装入数组arr2 MsgBox arr1(1, 1)  '读取arr数组中第1行第1列的数值MsgBox arr2(2, 2) '读取arr1数组的第2行第2列的数值End Sub2、数组的赋值和计算...(arr)MsgBox arr1(2, 1) '转换后的数组是1列多行的二维数组End Sub '二维数组转一维 '注意:在转置时只有1列N行的数组才能直接转置成一维数组Sub arr_tranpose2

    2K00

    手把手教你实操vlookup的7种用法,这个函数别说没用过哦!

    函数的语法为: VLOOKUP(①要找谁,②在哪儿找,③返回第几列的内容,④精确找还是近似找) ① 要查询的 ② 需要查询的单元格区域,这个区域中的首列必须要包含查询,否则公式将返回错误。...如果查询区域中包含多个符合条件的查询VLOOKUP函数只能返回第一个查找到的结果。...③ 用于指定返回查询区域中第几列的 ④ 决定函数的查找方式,如果为0或FASLE,用精确匹配方式,而且支持无序查找;如果为TRUE或被省略,使用近似匹配方式,同时要求查询区域的首列按升序排序。...公式为: =VLOOKUP(D2,H:I,2) ? Tips: VLOOKUP函数第四参数被省略,在近似匹配模式下返回查询的精确匹配或近似匹配如果找不到精确匹配返回小于查询的最大。...VLOOKUP函数使用1至N的递增序列作为查询,使用A:C列作为查询区域,以精确匹配的方式返回与之相对应的B列的姓名。注意查找区域必须由辅助列A列开始。 最后将辅助列字体设置为白色或进行隐藏即可。

    2.4K31

    Excel公式技巧81:查找数字时,可以考虑使用SUMIFS函数

    我们在查找时,通常会想到VLOOKUP函数,或者INDEX/MATCH函数。 VLOOKUP函数在指定区域的首列查找,并返回指定列中对应的。INDEX函数基于指定的行号列标从单元格区域中返回。...其实,如果想要获取的是一个数字,可以考虑使用SUMIFS函数;而如果想要获取的是其它类型,例如文本,考虑使用传统的查找函数(VLOOKUP函数、INDEX函数、MATCH函数)。...1.如果找不到,也就是说查找不到匹配的,那么VLOOKUP函数会返回错误#N/A,这会影响引用该的其它单元格或依赖该的公式;而SUMIFS函数会返回0。...2.当存在多个相匹配的时,VLOOKUP函数仅返回第一个相匹配的,而SUMIFS函数返回所有匹配项之和。...3.当某在一个单元格中作为数字类型存储,而在另一个单元格中作为文本字符串存储时,VLOOKUP不会将它们认为是相等的,而SUMIFS函数不会这么讲究,将匹配相等的,甚至作为不同数据类型存储。

    1.9K10

    精通数组公式16:基于条件提取数据

    5.这里没有考虑使用VBA解决方案,有时使用它们是自动执行数据提取的好方法。 为何提取数据的公式如此复杂? 当从表中提取数据时,实际上是在执行查找。...在Excel中,标准的查找函数例如INDEX、MATCH、VLOOKUP等都非常好,但当存在重复时就比较困难了。如下图1所示,提取满足3个条件的数据记录,可以看出有2条记录满足条件。...如果需要使用公式提取记录,那么有两个基本的方法: 1.基于辅助列使用标准的查找函数。辅助列包含提供顺序号的公式,只要公式找到了满足条件的记录。...注意,SUM函数将逻辑转换成1或0,并且忽略文本。 ? 图3:最终的辅助列公式使用SUM函数将AND函数的逻辑与上方单元格中的相加 单元格H6是一个辅助单元格。...对于本示例,构造辅助列的公式: =SUM(ISNUMBER(MATCH(D10,B3:B4,0)),A9) 或: =SUM(OR(D10=B3,D10=B4),N9) 示例:使用辅助列,AND和OR条件

    4.3K20

    【收藏】数据分析必会的Excel高频函数合集

    第1个参数为判断条件,当返回TRUE时,返回1,否则返回2 1.1.1 单条件判断 如下图所示,要根据D列的学生分数判断该学生某学科的分数是否及格。...如下两幅图,上图在单独使用VLOOKUP函数时,出现错误#N/A,假如人工进行二次去删除错误,数据量较大时会影响工作效率,此时配套IFERROR函数,可以事半功倍,如第二幅图。 ? ?...第二个参数是需要查询的单元格区域,这个区域中的首列必须是要包含查询,否则公式将会返回错误如果查询区域中包含多个符合条件的查询,VLOOKUP函数只能返回第一个查找到的结果。...如果找不到精确匹配返回小于查询的最大。使用近似匹配时,查询区域的首列必须按升序排序,否则无法得到正确的结果。...通俗的来讲,就是返回指定在数值的位置,如果在数组中没有找到该返回#N/A。

    3.7K20

    VBA变量5年踩坑吐血精华总结

    bottom(最小)和top(最大)之间的随机数,且每次Excel编辑后该公式都会自动刷新返回的随机数; 我们一起思考一下,这样一个需求用第02篇(todo文章传输门)分享的能够实现吗?...如果按照上面这个思路,是不是我们需要在每行后面都加上一个「查看答案」的按钮,然后关联每一个宏。 image.png 如果是这样的话,那么还学什么VBA,直接手工输入,它不香吗?...于是去寻找「单元格B2」的,发现「单元格B2」=1 image.png (4)「单元格B2」的1带入Cells(x, 10) = Cells(x, 6) * Cells(x, 8),变为Cells...F1的为 28,单元格H1的为30,计算二者之间的 image.png (6)最后,将二者的乘积赋值给「单元格F1」,并执行写入操作 image.png 通过,以上我们使用VBA中的变量使我们的程序更加的灵活...(2)变量命名有讲究,需要注意以下四点: a.尽量使用有意义的名字,且尽量使用英文或拼音命名 b.不要使用特殊字符 c.不能和系统保留字(关键字)一致 d.VBA大小写不敏感 image.png

    1.7K00
    领券