InStr()返回string2中char的字符串位置

时间:2017-08-04 10:28:53

标签: excel vba

我刚刚开始在VBA工作了一些,所以也许它有点愚蠢,但是如果你能帮助我发现它会很棒。问题在于我试图计算产品类型出现的次数。由于使用不同来源的性质,类型并不总是具有完全相同的格式。在我的情况下,我对所有包含子串" etf"的所有类型感兴趣。当我调用InStr()时,它总是返回1,也就是起始位置,所以函数正在考虑字符串" etf"没有任何东西或零长度(根据Microsoft Documentation)。我不明白为什么。任何帮助将非常感激。

InStr()调用如下InStr(1, LCase(Sheets(ws).Cells(i, columnOfInterest).Value), "etf", 0)其中ws是工作表名称,i是行指示符(来自for循环),columnOfInterest是包含产品类型的列。

3 个答案:

答案 0 :(得分:0)

更新,想通了。我曾经在我的Mac上工作过一次,并且出于某种原因,它提出了与vba期待的不同风格的引号。因此,它将“etf”视为无关或零长度。谢谢大家的快速回复。

如果其他人在稍后阶段阅读此内容,并且您遇到类似问题,请检查引号是否如下所示: $.ajax({ type: "POST", url: url, headers: { 'Token': 'your_token_here' }, data: { 'body': 'value' } }).done(function (data) { console.log("API call successfull : ", data); });

答案 1 :(得分:-1)

试试这个:

InStr(LCase(Sheets(ws).Cells(i, columnOfInterest).Value), "etf")

将您的断点设置为此行,并确保Sheets(ws).Cells(i, columnOfInterest).Value返回string

答案 2 :(得分:-1)

你还在尝试什么? 如果要查找实例数,请尝试这些行

try {
    ...
} catch(ApplicationError e) {
    throw new RuntimeException(e);
}

如果你试图找到子字符串的位置,那么instr()应该可以正常工作