|
xzwdk 发表于 2013-8-28 14:21
谢谢老师的支持。我修改了一部分内容后,虽然已经实现我的要求了,还请老师看看还有没有需要优化的地方? ...
原来最后几个也有要求 当时没看明白
是不是第2个得有数字 并且含"ex"字符的才是关键词9?
是不是第2个是6,且含"作用"字符的才是关键词10?
你原来的公式真的让人头大啊 谁能根据你那个公式把每条定义都看全了啊
刚刚研究了一下like这个功能 判断条件简化了一下 增加了上面说的功能- Private Sub Worksheet_Change(ByVal Target As Range)
- If Target.Address <> "$K$28" Then Exit Sub
- On Error Resume Next '忽略错误
- Dim Char(5), KyWrd(10)
- Dim Txt, A, B, C, D, i, m, q
- Txt = Replace(Sheet1.[k28].Value, "-", " ")
- '将原数据按照分隔符分成5部分
- D = 1
- For i = 1 To Len(Txt)
- If Mid(Txt, i, 1) <> " " Then
- Char(D) = Char(D) & Mid(Txt, i, 1)
- Else
- D = D + 1
- End If
- Next
- '取前2个关键字
- A = Len(Char(1))
- If Char(1) Like "?[0-9]*" Then '判断第二个字符是不是数字
- KyWrd(1) = Left(Char(1), 1)
- If A = 5 Then KyWrd(2) = Mid(Char(1), 2, 1)
- Else
- KyWrd(1) = Left(Char(1), 2)
- End If
- '取第3-5个关键字
- KyWrd(3) = Mid(Char(1), A - 2, 1)
- KyWrd(4) = Mid(Char(1), A - 1, 1)
- KyWrd(5) = Mid(Char(1), A - 0, 1)
- '取第6-7个关键字
- If Char(2) Like "*[0-9]" Then '判断压力等级最后的字符是不是数字
- KyWrd(6) = Char(2)
- Else
- KyWrd(6) = Left(Char(2), Len(Char(2)) - 1)
- KyWrd(7) = Right(Char(2), 1)
- End If
- '取第8关键字
- KyWrd(8) = Char(3)
- '取第9关键字
- If UCase(Char(4)) Like "EX*" And KyWrd(2) <> "" Then KyWrd(9) = Char(4)
- '取第10关键字
- If KyWrd(2) = 6 Then
- If Char(4) Like "*作用*" Then KyWrd(10) = Char(4)
- If Char(5) Like "*作用*" Then KyWrd(10) = Char(5)
- End If
- '把关键字传递到表格
- For q = 1 To 10
- Sheet1.Cells(q * 2 + 3, 12).Value = KyWrd(q) '测试的时候中间那个 12 是把结果写道了L列 如果你测试完觉得没问题,就改成 11
- Next
- End Sub
复制代码 |
|