ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1007|回复: 10

[求助] 整个工作簿所有工作表按B列查找替换特定值到每个工作表指定列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-20 16:40 | 显示全部楼层 |阅读模式
各位大神:      在实际应用中,遇到以下的问题希望通过VBA来提高效率:
1.按shee1表里定位内容(A2的内容31A000-000A(2225011))在整个工作簿中每个工作表的【B列】里查找,若存在定位内容,则在对应的工作表里将对应的【K列】值替换为此表更改内容的值(B2的内容WXB-WWS-ZP);定位内容31A000-000A(2225011)也可能存在工作表中的F列,则不用执行替换内容与更改标注;2.同时在对应行的最后一列将更改标注(C2的内容GGTZ-2023013 2023.2.17)填入,因为定位内容会存在多个标注,例如sheet4中0列与N列均已存在标注,故将GGTZ-2023013 2023.2.17填入P列,而sheet3中0列不存在标注,故将GGTZ-2023013 2023.2.17填入0列;3.更改的内容与更改标注需按此表对应的底色标注对应工作表。
       实际中整个工作簿上百个工作表,一个个查找与替换太费时间,望各位有经验的帮忙写个代码,万分感谢!

整个工作簿所有工作表按B列查找替换特定值-230220.rar

19.04 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2023-2-20 17:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
若定位内容31A000-000A(2225011)存在工作表中的F列,则不用执行替换内容与更改标注;
若存在定位内容,则在对应的工作表里将对应的K列值替换为此表更改内容的值(B2的内容WXB-WWS-ZP);
楼主认真对照一下这两句话呗,究竟要如何理解????

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-21 08:07 | 显示全部楼层
3190496160 发表于 2023-2-20 17:05
若定位内容31A000-000A(2225011)存在工作表中的F列,则不用执行替换内容与更改标注;
若存在定位内容,则在 ...

sheet1里的定位内容在每个工作表的【B列】里查找,若存在定位内容,则在对应的工作表里将对应的【K列】值替换为此表更改内容;定位内容也可能存在每个工作表工作表中的F列,则不用执行替换内容与更改标注,例如sheet5里的F列就有定位内容,但对应的K列不用替换,也不用标注。

TA的精华主题

TA的得分主题

发表于 2023-2-21 08:50 | 显示全部楼层
楼主的需求描述,说得不清晰,猜一个吧。

QQ图片20230221084850.png

整个工作簿所有工作表按B列查找替换特定值-230220.zip

29.27 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2023-2-21 08:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 查找替换()
Dim ar As Variant
Dim rn As Range
With Sheet1
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    ar = .Range("a1:c" & r)
End With
For i = 2 To UBound(ar)
    If Trim(ar(i, 1)) <> "" Then
        For Each sh In Sheets
            If sh.Index > 1 Then
                rs = sh.Cells(Rows.Count, 1).End(xlUp).Row
                Set rn = sh.Range("b5:f" & rs).Find(ar(i, 1), , , , , , 1)
                If Not rn Is Nothing Then
                    h = rn.Column
                    If h = 2 Then
                        x = rn.Row
                        y = sh.Cells(x, Columns.Count).End(xlToLeft).Column + 1
                        sh.Cells(x, 11) = ar(i, 2)
                        sh.Cells(x, 11).Interior.ColorIndex = Sheet1.Cells(i, 2).Interior.ColorIndex
                        sh.Cells(x, y) = ar(i, 3)
                        sh.Cells(x, y).Interior.ColorIndex = Sheet1.Cells(i, 3).Interior.ColorIndex
                    End If
                End If
            End If
        Next sh
    End If
Next i
MsgBox "ok!"
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-2-21 08:55 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-21 09:37 | 显示全部楼层
3190496160 发表于 2023-2-21 08:55
Sub 查找替换()
Dim ar As Variant
Dim rn As Range

谢谢,代码整体是对的,目前还有一个问题是更改标注,想要的标注不是从K列开始算,而是从N列(每个工作表的备注列)开始,所以运行结果时sheet3里的备注没内容,应该填在N列,但代码结果会把标注会填在L列。麻烦您看下!

TA的精华主题

TA的得分主题

发表于 2023-2-21 09:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
anline1739 发表于 2023-2-21 09:37
谢谢,代码整体是对的,目前还有一个问题是更改标注,想要的标注不是从K列开始算,而是从N列(每个工作表 ...

变量y加一个判断不就行了吗,
if y<14 then
y=14
else
y=y

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-21 09:42 | 显示全部楼层
3190496160 发表于 2023-2-21 09:40
变量y加一个判断不就行了吗,
if y

明白了,非常感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-21 09:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2023-2-21 08:50
楼主的需求描述,说得不清晰,猜一个吧。

谢谢你的代码!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 02:46 , Processed in 0.046393 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表