|||
城建档案*(管理+信息管理)*系统 |
电力*远程*培训*系统*(总站+主站)*分站 |
(泄漏 + 漏泄)* (通信 + 通讯)*(矿 + 井)*(无源 + 宽频) |
建筑 *(施工+脚手架+模板工程+基坑支护)*(系统+平台+软件) |
单片机*(机房+基站)*(通风+新风+换气+排气+降温+散热+温控) |
(脐橙+水果+农产品+茶)*(安全+质量)* 追溯 *(系统+平台) |
(探伤车+钢轨)*(缺陷+伤损+标识)*(定位+GPS+图像识别+视频监控) |
光纤光栅 * 桥 + 九江 * 长江 * 桥 |
(隧道 + 桥梁 + 桥隧)* 三维 *(成图 + 建模 + 可视 + 动态浏览)* 地质 |
将以上表格中数据按照标点分割成以下格式:
3G | * | P2P | * | H.264 | * | |||||||||||
多方 | * | ( | 通信 | + | 通讯 | + | 电话 | ) | ||||||||
( | 招商 | + | 引资 | ) | * | ( | 系统 | + | 平台 | + | 软件 | + | 工作流 | ) | ||
城建档案 | * | ( | 管理 | + | 信息管理 | ) | * | |||||||||
电力 | * | 远程 | * | 培训 | * | 系统 | * | ( | 总站 | + | 主站 | ) | * | |||
( | 泄漏 | + | 漏泄 | ) | * | ( | 通信 | + | 通讯 | ) | * | ( | 矿 | + | 井 | |
建筑 | * | ( | 施工 | + | 脚手架 | + | 模板工程 | + | 基坑支护 | ) | * | ( | 系统 | + | 平台 | + |
单片机 | * | ( | 机房 | + | 基站 | ) | * | ( | 通风 | + | 新风 | + | 换气 | + | 排气 | + |
( | 脐橙 | + | 水果 | + | 农产品 | + | 茶 | ) | * | ( | 安全 | + | 质量 | ) | * | 追溯 |
( | 探伤车 | + | 钢轨 | ) | * | ( | 缺陷 | + | 伤损 | + | 标识 | ) | * | ( | 定位 | + |
光纤光栅 | * | 桥 | + | 九江 | * | 长江 | * | |||||||||
( | 隧道 | + | 桥梁 | + | 桥隧 | ) | * | 三维 | * | ( | 成图 | + | 建模 | + | 可视 | + |
SmarTeam | * | ( | Oracle | + | 电子仓库 | ) | * |
vba程序
Sub cutStringBySymbol()
'
' cut Macro
'
Dim i, i1, j, k1, k2, m, n As Integer
Dim sWord, sRight, sMatch, sLeft, sMid As String
For i = 1 To 1113 '定义行数
sWord = Sheet1.Cells(i, 1)
m = InStr(1, sWord, "*")
n = InStr(1, sWord, "+")
k1 = InStr(1, sWord, "(")
k2 = InStr(1, sWord, ")")
Sheet2.Cells(i, 1) = m
Sheet2.Cells(i, 2) = n
Sheet2.Cells(i, 3) = k1
Sheet2.Cells(i, 4) = k2
i1 = 1
If m <> 0 Or n <> 0 Or k1 <> 0 Or k2 <> 0 Then '判断是否存在逻辑符号
If m = 0 Then '将不存在的逻辑符号做最大化处理,便于后期处理
m = 20000
End If
If n = 0 Then '将不存在的逻辑符号做最大化处理,便于后期处理
n = 20000
End If
If k1 = 0 Then '将不存在的逻辑符号做最大化处理,便于后期处理
k1 = 20000
End If
If k2 = 0 Then
k2 = 20000
End If
j = Application.Min(m, n, k1, k2) '求最小值
Sheet2.Cells(i, 5) = j
sRight = sWord
If j <> 20000 Then
While j <> 20000 '判断是否不再有逻辑符号
sLeft = Mid(sRight, 1, j - 1)
sMid = Mid(sRight, j, 1)
sRight = Mid(sRight, j + 1)
If sLeft <> "" Then
Sheet3.Cells(i, i1) = sLeft
i1 = i1 + 1
End If
Sheet3.Cells(i, i1) = sMid
i1 = i1 + 1
m = InStr(1, sRight, "*")
n = InStr(1, sRight, "+")
k1 = InStr(1, sRight, "(")
k2 = InStr(1, sRight, ")")
If m = 0 Then
m = 20000
End If
If n = 0 Then
n = 20000
End If
If k1 = 0 Then
k1 = 20000
End If
If k2 = 0 Then
k2 = 20000
End If
j = Application.Min(m, n, k1, k2)
Wend
End If
Else
Sheet3.Cells(i, 1) = sWord '将不符合条件的直接存入表中
End If
Next
'
End Sub
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-21 23:41
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社