Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何指定1个单元格中的最后一个字符(在IF内)_Excel_Vba - Fatal编程技术网

Excel 如何指定1个单元格中的最后一个字符(在IF内)

Excel 如何指定1个单元格中的最后一个字符(在IF内),excel,vba,Excel,Vba,我有一个代码,可以复制和重写介于“(“和”)之间的任何内容,但现在我有了不同类型的数据,这些数据不以“)”结尾,所以,当它到达单元格中的最后一个字符时,我需要它停止。也许这是个愚蠢的问题,但我似乎找不到解决问题的方法。我是vba的一名学生和新手(5天前我不知道vba是什么…),也很抱歉我的英语不好 我试图搜索(在这里,谷歌,youtube),但我找不到我需要的任何东西 'zaciatok=start koniec=end dlzka=length Do While Mid(LookInHere

我有一个代码,可以复制和重写介于“(“和”)之间的任何内容,但现在我有了不同类型的数据,这些数据不以“)”结尾,所以,当它到达单元格中的最后一个字符时,我需要它停止。也许这是个愚蠢的问题,但我似乎找不到解决问题的方法。我是vba的一名学生和新手(5天前我不知道vba是什么…),也很抱歉我的英语不好

我试图搜索(在这里,谷歌,youtube),但我找不到我需要的任何东西

'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)
<>最后注意:如果您的模式开始变得越来越复杂,考虑查看和实现正则表达式。