高级功能InStr

时间:2016-05-23 11:20:49

标签: vba excel-vba excel-2007 excel

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

Image of my excel. 我想制作一个循环来在正确的单元格中插入数据。 我添加第二个元素的代码是:

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

问题是,我必须使用复杂的循环来执行大量的InStr,具体取决于变量j。

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

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

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

1 个答案:

答案 0 :(得分:0)

改为使用Split()

如果您想将所有值按照它们已出现的顺序排列:

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

或者,如果您想在不同的列中使用不同的值:

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