前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel VBA取白色单元格内容黄色的单元格的Address

Excel VBA取白色单元格内容黄色的单元格的Address

作者头像
哆哆Excel
发布2023-09-09 10:44:49
2810
发布2023-09-09 10:44:49
举报
文章被收录于专栏:哆哆Excel

PS:工作中用到的代码,存起来备用

问题:有一程序:批量提取多工作簿中指定单元格的内容汇总到总表

程序运行如下:

1.取得文件夹中的所有.xlsx文件的路径

2.依次workbooks.Open("文件路径")

3.取得每个工作簿的指定单元格的Address,【此处要先编辑好】

4.再关闭文件

再打开下一个文件,循环下去就可以啦

【问题】问题就在第三步。如下图,数据量大,所以设计一个代码来提高效率

【代码】先用代码取得,再整理一下

代码如下

代码语言:javascript
复制
Sub yhdGet_address()
    Dim outSht As Worksheet
    Dim r As Range, myr As Range
    Dim colorA As Integer, Saddress As String
    Set dicA = CreateObject("scripting.dictionary")
    Set dicB = CreateObject("scripting.dictionary")
    Set outSht = Worksheets("结果")
    With outSht
        colorA = .Range("B2").Interior.ColorIndex
        colorB = .Range("C2").Interior.ColorIndex
    End With
    With Worksheets("测试")
        Set myr = .Range("A1").CurrentRegion
        For Each r In myr
            If r.Interior.ColorIndex = colorA Then dicA(Application.WorksheetFunction.Clean(Replace(r.MergeArea.Cells(1, 1), " ", ""))) = ""
            If r.Interior.ColorIndex = colorB Then dicB(r.MergeArea.Cells(1, 1).Address(0, 0)) = ""
        Next
    End With
    With outSht
        .Range("B3").Resize(dicA.Count, 1) = Application.Transpose(dicA.keys)
        .Range("C3").Resize(dicB.Count, 1) = Application.Transpose(dicB.keys)
    End With
End Sub

结果如下,完成后,还要再手工整理

再手工整理,使项目与Address,相对应

再应用于,其他程序提取中,如果你有相应的操作一定知道有用

当然如果数据不多,就手工做吧

如下

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

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

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

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

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