ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 【已解决】求 很繁琐的文本数据整理 VBA 解法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-10-22 11:26 | 显示全部楼层 |阅读模式
···············
各位老师好
今有一难题。。。
之前找了很多文本整理软件,都没看到能最终实现此文本处理的工具
在EXCEL里要处理起来很是繁琐。

我是先查找 含有{3D  文本的所有行数,然后删除,然后查找含有 :2-3 的所有行数,再删除,然后……
嗯好繁琐。。。

在此向各位老师求解,,
能不能用VBA一键解决了

问题见附件,万分感谢
待处理就是要整理的文本,处理后的就是想要的结果的文本。。。
···
太诡异了,原来的文本居然每行都加了""
实际中是不需要这些“”的,
重新上传 help2.rar (1.96 KB, 下载次数: 16)

[ 本帖最后由 排序难题 于 2009-10-22 18:52 编辑 ]

help.rar

1.96 KB, 下载次数: 27

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-22 11:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
待处理就是要整理的文本,处理后的就是想要的结果的文本。。。

TA的精华主题

TA的得分主题

发表于 2009-10-22 11:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

  1. Private Sub CommandButton1_Click()
  2.     Dim irow%
  3.     Dim str$, k%

  4.     k = 0
  5.     Open ThisWorkbook.Path & "\成组数据.txt" For Output As #1
  6.     For irow = 1 To [A65536].End(3).Row
  7.         If Cells(irow, 1) Like "?=*" Then
  8.             str = ""
  9.             For k = 0 To 2
  10.                 str = str & Replace(Split(Cells(irow + k, 1), "=")(1), " ", "")
  11.             Next
  12.             str = Left(str, Len(str) - 1)
  13.             Print #1, str
  14.             irow = irow + 3
  15.         End If
  16.     Next
  17.     Close #1
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2009-10-22 11:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
处理数据.rar (9.44 KB, 下载次数: 12)

TA的精华主题

TA的得分主题

发表于 2009-10-22 12:20 | 显示全部楼层
原帖由 排序难题 于 2009-10-22 11:26 发表
此求助已发悬赏,请老师们移驾
http://club.excelhome.net/viewth ... eward&frombbs=1
···············
各位老师好
今有一难题。。。
之前找 ...

  1. Public Function 文本处理(ByVal FileName1 As String, ByVal FileName2 As String)
  2.   Dim I As Long, FileL As Long
  3.   Dim byteD() As Byte
  4.   Dim strFiles() As String, strFile As String
  5.   
  6.   On Error Resume Next
  7.   
  8.   FileL = FileLen(FileName1)
  9.   If FileL > 0 Then
  10.     ReDim byteD(FileL - 1)
  11.     FileL = FreeFile
  12.     Open FileName1 For Binary As FileL
  13.     Get FileL, , byteD
  14.     Close FileL
  15.     strFile = StrConv(byteD, vbUnicode)
  16.     Erase byteD
  17.     strFiles = Split(Replace(Replace(strFile, """", vbNullString), " ", vbNullString), vbCrLf)
  18.     strFile = vbNullString
  19.     For I = 0 To UBound(strFiles)
  20.       Select Case True
  21.         Case Mid(strFiles(I), 1, 1) = ":":          strFile = Mid(strFile, 1, Len(strFile) - 1) & vbCrLf
  22.         Case IsNumeric(Split(strFiles(I), "=")(0)): strFile = strFile & Replace(Split(strFiles(I), "=")(1), " ", vbNullString)
  23.       End Select
  24.     Next I
  25.     byteD = StrConv(strFile, vbFromUnicode)
  26.     FileL = FreeFile
  27.     If Len(Dir(FileName2, vbHidden Or vbNormal Or vbReadOnly Or vbSystem Or vbArchive)) Then
  28.       SetAttr FileName2, vbNormal
  29.       Kill FileName2
  30.     End If
  31.     Open FileName2 For Binary As FileL
  32.     Put FileL, , byteD
  33.     Close FileL
  34.   End If
  35. End Function

  36. Public Sub Test()
  37.   文本处理 ThisWorkbook.Path & "\待处理.txt", ThisWorkbook.Path & "\处理1.txt"
  38. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2009-10-22 12:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不知是不是这样。

help.zip

11.09 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2009-10-22 12:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
从已有的数据看,
三楼Like "?=*" 这个可行,
还有用len()=x,也行
至于后面的处理,没什么问题了

其实,这个文本是中规中矩的,在实际工作中碰到的文本,比这个要复杂不知几十倍的比比皆是

[ 本帖最后由 smhf_6 于 2009-10-22 12:41 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-22 13:36 | 显示全部楼层
原帖由 alzeng 于 2009-10-22 11:46 发表

Private Sub CommandButton1_Click()
    Dim irow%
    Dim str$, k%

    k = 0
    Open ThisWorkbook.Path & "\成组数据.txt" For Output As #1
    For irow = 1 To [A65536].End(3).Row
        If C ...

谢谢老师。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-22 14:17 | 显示全部楼层
原帖由 lb_bn 于 2009-10-22 12:27 发表
不知是不是这样。


老师 你的 在 待处理 文本里每行都加了 “”
这样的话我操作起来不方便了。。。
难道还要我先每行都加上“”,再执行 VBA?

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-22 14:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 alzeng 于 2009-10-22 11:47 发表
601659


老师把代码改成读取 待处理 文本,然后再执行VBA吧,
老师的代码很精简···

再次感谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-19 19:47 , Processed in 0.042231 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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