Excel 如何指定1个单元格中的最后一个字符(在IF内)
我有一个代码,可以复制和重写介于“(“和”)之间的任何内容,但现在我有了不同类型的数据,这些数据不以“)”结尾,所以,当它到达单元格中的最后一个字符时,我需要它停止。也许这是个愚蠢的问题,但我似乎找不到解决问题的方法。我是vba的一名学生和新手(5天前我不知道vba是什么…),也很抱歉我的英语不好 我试图搜索(在这里,谷歌,youtube),但我找不到我需要的任何东西Excel 如何指定1个单元格中的最后一个字符(在IF内),excel,vba,Excel,Vba,我有一个代码,可以复制和重写介于“(“和”)之间的任何内容,但现在我有了不同类型的数据,这些数据不以“)”结尾,所以,当它到达单元格中的最后一个字符时,我需要它停止。也许这是个愚蠢的问题,但我似乎找不到解决问题的方法。我是vba的一名学生和新手(5天前我不知道vba是什么…),也很抱歉我的英语不好 我试图搜索(在这里,谷歌,youtube),但我找不到我需要的任何东西 'zaciatok=start koniec=end dlzka=length Do While Mid(LookInHere
'zaciatok=start koniec=end dlzka=length
Do While Mid(LookInHere, y, 1) <> ""
If Mid(LookInHere, Z, 1) = "(" Then
zaciatok = Z
End If
If Mid(LookInHere, y, 1) = ")" Then
koniec = y
dlzka = (koniec - 1) - zaciatok
dlzka = Abs(dlzka)
SplitCatcher = Mid(LookInHere, zaciatok + 1, CStr(dlzka))
MsgBox SplitCatcher
End If
y = y + 1
Z = Z + 1
Loop
'zaciatok=start koniec=end dlzka=length
在中间做(看这里,y,1)”
如果Mid(LookInHere,Z,1)=“(那么
zaciatok=Z
如果结束
如果Mid(LookInHere,y,1)=“”,则
koniec=y
dlzka=(koniec-1)-zaciatok
dlzka=Abs(dlzka)
SplitCatcher=Mid(LookInHere,zaciatok+1,CStr(dlzka))
MsgBox SplitCatcher
如果结束
y=y+1
Z=Z+1
环
您可以使用Right(LookInHere,1)
获取LookInHere的最后一个字符
在您的特定实现中,一个选项是修改Do While…
循环,以同时测试字符串的长度。这条线看起来像:
Do While Mid(LookInHere, y, 1) <> "" And y < Len(LookInHere)
For i = 1 to Len(LookInHere)
MsgBox Mid(LookInHere, i, 1)
'Input your logic here
Next i
问题是这些版本中的每一个都相对低效,在字符串a中循环每个字母执行计算。考虑使用内置Excel函数。Instr
返回字符的位置,如果找不到,则返回零。例如,Instr(“Abcdef”,“b”)
将返回数字2,Instr(“Abcdef”,“k”)
将返回零。您可以用这两个函数调用替换整个循环
Z = Instr(LookInHere, "(")
y = Instr(LookInHere, ")")
If y = 0 Then y = Len(LookInHere)
<>最后注意:如果您的模式开始变得越来越复杂,考虑查看和实现正则表达式。