找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 638|回复: 5

[编程申请]:如何将字符串自动分割的处理函数

[复制链接]
发表于 2005-10-14 13:20:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在VBA编程过程中,本人遇见将下列所属字符串   
   string="72-螺母M16 GB41-86(不锈钢)\P372-螺栓M16×45 GB5780-86\P3-缠绕式垫片B31-80-20 GB4622\PQ11MF-16铸铁高温球阀Dn40"
   将string自动分割后用数组变量赋值示例如下:
a(1,1)="GB41-86"
a(1,2)="螺母M16"
a(1,3)=""
a(1,4)="72"
a(2,1)="GB5780-86"
a(2,2)="螺栓M16×45"
a(2,3)=" 不锈钢"
a(2,4)="72"  
a(3,1)="GB4622"
a(3,2)=" 缠绕式垫片B31-80-20"
a(3,3)=""
a(3,4)="3"
a(4,1)=""
a(4,2)="Q11MF-16铸铁高温球阀Dn40"
a(4,3)=""
a(4,4)="1"
   字符串长度也不确定,请教各位大虾试编此VBA函数,不胜感激
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-14 17:52:59 | 显示全部楼层
怎么少了两个“3”?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-14 21:18:00 | 显示全部楼层
我认为楼主应该指定统一的分割符号,如“,”,这样可以用split函数很轻松的处理了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-15 10:50:40 | 显示全部楼层
string="72-螺母M16 GB41-86(不锈钢)\P72-螺栓M16×45 GB5780-86\P3-缠绕式垫片B31-80-20 GB4622\PQ11MF-16铸铁高温球阀Dn40"
将string自动分割后用数组变量赋值示例如下:
72-螺母M16 GB41-86(不锈钢)
    a(1,1)="GB41-86"
      a(1,2)="螺母M16"
      a(1,3)=""
      a(1,4)="72"
72-螺栓M16×45 GB5780-86
      a(2,1)="GB5780-86"
      a(2,2)="螺栓M16×45"
      a(2,3)=" 不锈钢"
      a(2,4)="72"
3-缠绕式垫片B31-80-20 GB4622      
      a(3,1)="GB4622"
      a(3,2)=" 缠绕式垫片B31-80-20"
      a(3,3)=""
      a(3,4)="3"
Q11MF-16铸铁高温球阀Dn40
      a(4,1)=""
      a(4,2)="Q11MF-16铸铁高温球阀Dn40"
      a(4,3)=""
      a(4,4)="1"
说明:
一、 a(i,1)-------i表示第i 行
      a(1,j)-------j=1  表示标准号
               j=2  表示名称及规格
               j=3  表示材料
               j=4  表示数量
二、string为变量

  并请教2楼楼主,你附带的图片怎样做的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-15 12:05:01 | 显示全部楼层
最初由 秦林 发布
[B]并请教2楼楼主,你附带的图片怎样做的?[/B]

复制-》粘贴


  1. Sub tt()
  2. s = "72-螺母M16 GB41-86(不锈钢)\P72-螺栓M16×45 GB5780-86\P3-缠绕式垫片B31-80-20 GB4622\PQ11MF-16铸铁高温球阀Dn40"
  3. m = 1
  4. arr1 = Split(s, "\P")

  5. Dim a() As String
  6. ReDim a(1 To UBound(arr1) + 1, 1 To 4)

  7. For Each i In arr1
  8.     sindex = InStr(i, " ")
  9.     If InStr(i, " ") > 0 Then
  10.         a(m, 1) = Right(i, Len(i) - sindex)
  11.         
  12.         sindex1 = InStr(a(m, 1), "(")
  13.         If sindex1 > 0 Then
  14.             sindex2 = InStr(a(m, 1), ")")
  15.             a(m, 3) = Mid(a(m, 1), sindex1 + 1, sindex2 - sindex1 - 1)
  16.             a(m, 1) = Left(a(m, 1), sindex1 - 1)
  17.             
  18.         End If
  19.         i = Left(i, sindex - 1)
  20.     End If
  21.    
  22.     If Left(i, 1) > "0" And Left(i, 1) <= "9" Then
  23.         sindex = InStr(i, "-")
  24.         a(m, 4) = Left(i, sindex - 1)
  25.         i = Right(i, Len(i) - sindex)
  26.     Else
  27.         a(m, 4) = 1
  28.     End If
  29.    
  30.     a(m, 2) = i
  31.    
  32.     m = m + 1
  33. Next i

  34. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-15 15:24:08 | 显示全部楼层
一个不错的程序!谢谢!再次请教2楼楼主,你附带的图片经过"复制-》粘贴"做的,在回复的窗口里不能粘贴,在“预览回复”--"贴图"也不行,那应该在哪里粘贴?还有你回复的代码窗口又是怎样做的,我是业余自学的,多多包涵!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-28 23:24 , Processed in 0.222332 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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