首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超前函数InStr

超前函数InStr
EN

Stack Overflow用户
提问于 2016-05-23 11:20:49
回答 1查看 370关注 0票数 0

我知道如何使用函数InStr,但我不知道如何以这种方式使用它:

我擅长的形象。我想要做一个循环,将数据插入到正确的单元格中。我添加第二个元素的代码是:

代码语言:javascript
复制
For j = 3 To 129
    For i = 2 To 849
        Cells(i, j) = Mid(Cells(i, 1), InStr(Cells(i, 1), ",") + 1, (InStr(InStr(Cells(i, 1), ",") + 1, Cells(i, 1), ",")) - (InStr(Cells(i, 1), ",") + 1))
    Next i
Next j

问题是,根据变量j,我需要使用一个复杂的循环来执行很多InStr。

如果函数InStr有一个位置,我说:我想找到xth字符(“,"),我会让它工作;问题是我需要一个双InStr来忽略第一个,”所以它给了我第二个的位置,“。

我认为这个问题要复杂得多,所以问我任何你不明白的事情!

P.S.:我已经插入了B/entry和C/class列的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-23 11:27:38

使用Split()代替:

如果要将所有值按它们已经出现的顺序排列:

代码语言:javascript
复制
Dim values As Variant

For i = 2 to Cells(Rows.Count, 1).End(xlUp).Row

    values = Split(Cells(i, 1).Value, ",")
    Cells(i, 1).Resize(1, UBound(values) + 1).Value = values

Next

或者,如果您希望在不同的列中有不同的值:

代码语言:javascript
复制
Dim values As Variant

For i = 2 to Cells(Rows.Count, 1).End(xlUp).Row

    '// Create an array of values from your string
    values = Split(Cells(i, 1).Value, ",")

    '// Lets say you want to put the 3rd value in column D
    Range("D" & i).Value = CStr(values(2)) '// arrays are zero indexed and start at 0

Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37389651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档