ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 打印 上一主题 下一主题将EXCEL表格中的指定内容提取组成新表格(数据整理)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-2 08:52 | 显示全部楼层 |阅读模式
求助各位大神,数据整理,内附源数据清单,希望将内容指定内容提出(按模板格式)。谢谢,急求

数据提取.zip

1.89 MB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2023-2-2 09:30 | 显示全部楼层
规范清单,猜是想根据数据源的i  列来提取,但是,飞走材料清单就是一头雾水了

TA的精华主题

TA的得分主题

发表于 2023-2-2 10:02 | 显示全部楼层
3190496160 发表于 2023-2-2 09:30
规范清单,猜是想根据数据源的i  列来提取,但是,飞走材料清单就是一头雾水了

看懂了,规范清单是想根据数据源的G列来提取,比如G49EN1=P00000010|管道系统的安装按CPS1210。|CPS1210
EN2=P00000106|装配车间操作按CPS2000。|CPS2000
EN3=P00000131|螺栓螺母的安装按CPS2120。|CPS2120
EN4=P00000464|零件和装配件的标识按CPS9010。|CPS9010
FL1=管路系统安装按221GD601执行
FL2=在通风软管16139X0X0000外侧包裹绿包布EN6049-006-40-5保护套,使用AA52081-C-2对保护套进行绑扎,至少扎三个结。允许包裹绿包布的通风软管与周围的线束、结构、支架接触。
提取所有CPS和后面的数字并去重

飞走材料清单是比如数据源Q269
粘接定义1={防磨边EN按EN7中粘接材料1或者粘接材料2的施工要求和固化的规定粘接######FL1###CMS-SL-103|B类1/2级###CMS-SL-103|B类2级};
提取CMS-SL-103和对应B列的值

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-2 10:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
高个子 发表于 2023-2-2 10:02
看懂了,规范清单是想根据数据源的G列来提取,比如G49EN1=P00000010|管道系统的安装按CPS1210。|CPS1210
...

感谢大佬回复。工艺规范是的,飞走材料提取的是CMS-SL-103|B类1/2级和CMS-SL-103|B类2级以及对应的B列需要把类型级别也提取。

TA的精华主题

TA的得分主题

发表于 2023-2-2 12:30 | 显示全部楼层
Sub 规范清单()
Application.ScreenUpdating = False
Dim ar As Variant
Dim br()
With Sheets("报表 1")
    r = .Cells(Rows.Count, 7).End(xlUp).Row
    If r < 2 Then MsgBox "报表 1为空!": End
    ar = .Range("g1:g" & r)
End With
ReDim br(1 To 100000, 1 To 2)
n = 1
br(n, 1) = "序号"
br(n, 2) = "规范号"
For i = 2 To UBound(ar)
    If Not IsError(ar(i, 1)) Then
        If Trim(ar(i, 1)) <> "" Then
            If InStr(ar(i, 1), "|") > 0 Then
                If InStr(ar(i, 1), Chr(10)) = 0 Then
                    n = n + 1
                    br(n, 1) = n - 1
                    mr = Split(ar(i, 1), "|")
                    br(n, 2) = mr(UBound(mr))
                Else
                    rr = Split(ar(i, 1), Chr(10))
                    For s = 0 To UBound(rr)
                        If InStr(rr(s), "|") > 0 Then
                            n = n + 1
                            br(n, 1) = n - 1
                            mr = Split(rr(s), "|")
                            br(n, 2) = mr(UBound(mr))
                        End If
                    Next s
                End If
            End If
        End If
    End If
Next i
If n = 1 Then MsgBox "没有需要汇总的规范号!": End
Set wb = Workbooks.Add
With wb.Worksheets(1)
    .[a1].Resize(n, 2) = br
End With
wb.SaveAs Filename:=ThisWorkbook.Path & "\规范清单.xlsx"
Application.ScreenUpdating = True
MsgBox "ok!"
End Sub

TA的精华主题

TA的得分主题

发表于 2023-2-2 12:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1675312266887.png

TA的精华主题

TA的得分主题

发表于 2023-2-2 12:32 | 显示全部楼层
数据提取.rar (2 MB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2023-2-2 12:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
只写了规范材料清单的代码,飞走材料提取那些数据实在是看不懂
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 12:39 , Processed in 0.037560 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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