注册 登录
编程论坛 VB6论坛

VBA 里面函数抓取字符串

江小白 发布于 2017-09-02 23:30, 1865 次点击
以下字符串:31X9.50R16      106X109.50R16      165R13    185/60R16      P135/45R15    最前面两个字符串当中9.50  109.50的整数位为不固定位数,怎样用VBA函数形式抓取话红线部分,所有字符串栏位为"{{A65A}}",大神请帮忙解答下,谢谢
5 回复
#2
江小白2017-09-02 23:33
帮忙顶起来,大神来解答
#3
风吹过b2017-09-03 08:58
先查找 X 的位,如果没找到,设为1
a=instr(1,s,"X")+1
查找 / 和 R 和位置
b=instr(1,s,"/")
c=instr(1,s,"R")
以 二个位置中,非零 并且最小值
if b=0 then
  if  c=0 then
    d=len(s)
  else
    d=c
  end if
else
 if c=0 then
    d=b
  else
    if b>c then
       d=c
      else
        d=b
      endif
  endif
endif
得到了两位置了,后面自己搞定
手机写的代码,自己也琢磨下。

另外,这个判断根据你给出的条件写的,如果你最后一个例子是错的,那就整个代码错了。

#4
ZHRXJR2017-09-05 11:28
只有本站会员才能查看附件,请 登录

程序代码:

Dim P1 As Integer
AA = Array("31X9.50R16", "106X109.50R16", "165R13", "185/60R16", "P135/45R15")
Dim BB() As String, XX1 As Integer, XX2 As Integer, TT As Integer
P1 = UBound(AA)
ReDim BB(P1)
For I = 0 To P1
    If InStr(1, AA(I), "X") > 0 And InStr(1, AA(I), "R") > 0 Then
        XX1 = InStr(1, AA(I), "X")
        XX2 = InStr(1, AA(I), "R")
        TT = Len(AA(I))
        BB(I) = Mid(AA(I), XX1 + 1, XX2 - XX1 - 1)
    ElseIf InStr(1, AA(I), "R") > 0 Then
        XX1 = InStr(1, AA(I), "R")
        BB(I) = Left(AA(I), XX1 - 1)
    End If
    If InStr(1, AA(I), "/") > 0 Then
        XX1 = InStr(1, AA(I), "/")
        BB(I) = Left(AA(I), XX1 - 1)
    End If
    Text1.Text = Text1.Text & BB(I) & Space(6)
Next I
#5
江小白2017-09-05 21:06
回复 4楼 ZHRXJR
帅哥,要用函数形式的写啊,但 是VB格式,例如 查找就用InStr,不用find了
#6
江小白2017-09-05 21:09
回复 3楼 风吹过b
最后一个直接输出135就好了,不用输出P

VBA 里面函数抓取字符串
以下字符串:31X9.50R16      106X109.50R16      165R13    185/60R16      P135/45R15    最前面两个字符串当中9.50  109.50的整数位为不固定位数,怎样用VBA函数形式抓取话红线部分,所有字符串栏位为"{{A65A}}",大神请帮忙解答下,谢谢
1