前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >个人工作管理系统开发手记2:查找并获取相应的信息

个人工作管理系统开发手记2:查找并获取相应的信息

作者头像
fanjy
发布2022-11-16 13:32:37
6840
发布2022-11-16 13:32:37
举报
文章被收录于专栏:完美Excel

标签:VBA,Excel公式,个人工作管理系统

今天有点空闲时间,正好完善自己的个人工作管理系统,主要完善的功能就是在“说明”工作表中查找并将相应的内容输入到“目录”工作表中,以便直观地看出各分类的代表的意思。

我在“说明”工作表中定义了各种分类及其表示的意思,如下图2所示,列B是分类,列C是各分类代表的含义。

图1

在上图1中,我定义了一个动态的名称:

CatInfo

其对应的公式为:

=OFFSET(说明!$B$2,0,0,COUNTA(说明!$B:$B),2)

这样,使用名称动态定义了单元格区域,当在其中增加数据时,名称会自动扩展。

现在,我需要将其中的值获取到“目录”工作表中相应的分类下。

有很多种方法可以实现。首先,想到的是公式,如下图2所示。

图2

下拉到数据末尾即可获取对应的分类说明。

然而,如果分类未定义说明,则有可能出现错误,此时,可以使用IFERROR函数,如下图3所示。

图3

上述都是手动输入公式,其实,可以使用VBA来自动输入公式,其代码如下:

代码语言:javascript
复制
Sub GetCatgoryInfo()
    Dim lLastRow As Long
    Dim startRow As Long
    Dim i As Long

    startRow = 2
    lLastRow = Worksheets("目录").Range("B" &
    Rows.Count).End(xlUp).Row

    For i = startRow To lLastRow
        ' str = "=IFERROR(VLOOKUP(B" & i & ",CatInfo,2,FALSE),"""")"
        Worksheets("目录").Range("C" & i).Formula = "=IFERROR(VLOOKUP(B" & i & ",CatInfo,2,FALSE),"""")"
    Next i
End Sub

如果不希望使用Excel公式,可以使用VBA的Find方法来实现,代码如下:

代码语言:javascript
复制
Sub GetCategoryInfoBackup()
    Dim lLastRow As Long
    Dim startRow As Long
    Dim i As Long
    Dim str As String

    startRow = 2
    lLastRow = Worksheets("目录").Range("B" & Rows.Count).End(xlUp).Row
    On Error Resume Next
For i = startRow To lLastRow
        Worksheets("目录").Range("C" & i).Value = Range("CatInfo").Columns(1).Find(Worksheets("目录").Range("B" & i)).Offset(0, 1)
    Next i
End Sub

随着不断的应用,个人工作管理系统正不断增加方便的新功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档