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

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

作者头像
哆哆Excel
发布于 2023-09-09 02:44:49
发布于 2023-09-09 02:44:49
41400
代码可运行
举报
文章被收录于专栏:哆哆Excel哆哆Excel
运行总次数:0
代码可运行

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

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

程序运行如下:

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

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

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

4.再关闭文件

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

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

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

代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EXCEL VBA语句集300
        定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示  Option Compare Text ‘字符串不区分大小写  Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能  工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) ActiveWorkbook.name ‘返回活动工作薄的名称 (14) ThisWorkbook.Name ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化  工作表 (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后 (23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮 (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示 (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 ‘将页面设置更改为横向 (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径 ActiveSheet.PageSetup.Le
Tony老师
2020/03/05
2.2K0
VBA 在 Excel 中的常用操作
设置单元格 Value 里使用 Chr(10) 和 Chr(13),分别表示回车、换行。
mzlogin
2020/04/16
4.1K0
Excel应用实践25: 找出两个单元格区域中不相同的数据
有两组数据,一组是原来工作表中存储的,一组是从办公系统中下载的,这两组数据应该完全一样,但实际发现存在几个不相同的数据,现在想要找出这些不相同的数据,可是数据有上千条,一个个对照的话,速度慢不说,还不容易找全。
fanjy
2020/01/14
1.7K0
Excel应用实践25: 找出两个单元格区域中不相同的数据
VBA把数量不同的多表进行汇总
Set dic1 = CreateObject("Scripting.Dictionary")
哆哆Excel
2022/10/25
1K0
VBA把数量不同的多表进行汇总
小游戏:围住神经猫
用Excel VBA实现的围住神经猫游戏: 模块代码: Public MGraph(80, 80) As Long Public Patharc(80) As Long '存储最短路径下标 P
xyj
2020/07/28
4480
小游戏:围住神经猫
Excel VBA银行发放超过1W元的数据拆分
Set dic = CreateObject("Scripting.Dictionary")
哆哆Excel
2022/10/31
4340
VBA实战技巧26:使用递归确定所有的引用单元格
在Excel中,经常存在一个单元格引用另一个单元格中,而另一个单元格又引用其他单元格的情形。如何使用VBA代码编程确定指定单元格的所有引用单元格呢?
fanjy
2021/07/12
1.5K0
VBA实战技巧26:使用递归确定所有的引用单元格
ExcelVBA字典的输出
'练习字典的输出看代码吧 Sub 字典输出() Dim dic As Object, arr() Set dic = CreateObject("scripting.dictionary") ReDim arr(10) 'key是一个数字,item是一个一维数组, For M = 1 To 10 For i = 0 To UBound(arr) arr(i) = "k" & M & "--" & i
哆哆Excel
2022/10/31
9300
VBA字典(详解,示例)「建议收藏」
如果对上面水果种类进行计数:countifs,只需要将分类汇总的值改为数值1即可,每出现一次‘+1’
全栈程序员站长
2022/07/22
6.4K1
VBA字典(详解,示例)「建议收藏」
小游戏2048
用Excel VBA来实现的手机上玩的那种组合数字的小游戏。 Public Row As Integer, Col As Integer '偏移 Di
xyj
2020/07/28
7970
小游戏2048
使用字典汇总数据(续)
在学习了《使用字典汇总数据》后,让我们再往前一步。假设我们的数据需要在多个列上进行检查。将A列中的数据链接到B列中的数据,以创建唯一标识符,希望基于2列创建汇总,而不只是前一个示例中所示的一个。假设供应商是Bob,Bob订购了Apple和Orange。订单分为6个不同行,但不是Apple就是Orange。
fanjy
2022/11/16
5590
使用字典汇总数据(续)
问与答95:如何根据当前单元格中的值高亮显示相应的单元格?
Q:这个问题很奇怪,需要根据在工作表Sheet1中输入的数值高亮显示工作表Sheet2中相应的单元格。具体如下:
fanjy
2021/03/12
4.2K0
VBA代码:将垂直单元格区域转换成水平单元格区域
有时候,我们想将垂直列表中的数据转换为水平列表,通常可以使用数据透视表来完成。假设数据是唯一ID,并且客户端可以附加到相同的唯一ID,如下图1所示。
fanjy
2022/11/16
3790
VBA代码:将垂直单元格区域转换成水平单元格区域
ExcelVBA字典用法之按列拆分工作表
Set dic= CreateObject("Scripting.Dictionary")
哆哆Excel
2022/10/25
1.3K0
ExcelVBA字典用法之按列拆分工作表
常用功能加载宏——拆分工作表
有合并工作表,自然也离不开拆分工作表,将一个总表,按照某一列的内容拆分为多个工作表,然后可以再结合前面的一个工作簿的工作表另存为工作簿功能,就可以生成多个工作簿进行分发了:
xyj
2020/07/28
2.5K0
常用功能加载宏——拆分工作表
Excel VBA之Range对象
Cells(1,Columns.Count).End(xlToLeft).Column
哆哆Excel
2022/10/25
1.6K0
Excel VBA学习
学习一下,记录一下,资料来自于网络 网络代码收集一: Sub test() Dim arr, brr, i&, r&, k Set d = CreateObject("scripting.dictionary") Set d1 = CreateObject("scripting.dictionary") With Sheet1 r = .Cells(Rows.Count, 1).End(3).Row For i = 2 To r
哆哆Excel
2022/10/31
2K0
ExcelVBA每个月取得人员信息备份在一个文件中
'取得区工资+编外工资表中的人员信息可用于公积金与个人所得税的用途 '知识点:(1)字典并给item赋值数组的方法,(2)GetObject打开文件(3)Sheets.Add新建工作表(4)Split,Replace,Mid,InStr,Find方法(5)Redim数组
哆哆Excel
2022/10/25
4150
ExcelVBA每个月取得人员信息备份在一个文件中
VBA: 单元格区域基于指定列重新排序(3)
文章背景:在数据处理时,有时需要根据指定列的内容进行重新排序。比如样品测试时,假设存在5个测试点,其中2号点和3号点无需测,在做报告时,一般会保留2号点和3号点的位置,测试数据为空。
Exploring
2022/12/18
9130
VBA: 单元格区域基于指定列重新排序(3)
Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中
领导是要求是:有这样的一个表格,请按“模板”文件,建立面试级别的几个文件,并筛选出相应的内容填写到各工作簿中,
哆哆Excel
2022/10/25
8800
Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中
相关推荐
EXCEL VBA语句集300
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档