我知道如何使用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列的值。
答案 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