Excel VBA代码mid函数

时间:2015-08-13 19:27:57

标签: excel-vba vba excel

我有以下字符串“123 - 456789”。我想要做的是找到一种方法只捕获第二个空格后的剩余字符 - “456789” - 无论字符串的长度如何。

我有以下代码集:

 For leftLoop = 2 To leftNumberOfCells
     Range("A" & iRow) = Split(Range("B" & iRow).Value, " ")                
     Range("B" & iRow) = Mid("B" & iRow, InStr("B" & iRow, " "), 100)

     iRow = iRow + 1               
 Next leftLoop

代码行"Range("B" & iRow) = Mid("B" & iRow, InStr("B" & iRow, " "), 100)"是我尝试过的,除了其他方式(从在线搜索,但我似乎无法让它工作。

我有两个问题:

  1. 有人知道正确的代码应该是什么吗?和...
  2. 我可以引用字符串所在的单元格并在执行mid函数后将其替换到同一单元格中,而不必暂时将其放入另一个单元格并将其复制并粘贴回来吗?例如,我的字符串“123 - 456789”在单元格B2中,有没有办法对其进行编码,因此我可以引用单元格B2并同时将单元格B2替换为“456789”,而不必将其放在另一个单元格中然后复制和将其粘贴回B2。我希望你能得到我所要求的。
  3. 谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

这涉及第2部分。

Sub strings()

Dim replace As String
Dim bCell As Range

For leftLoop = 2 To leftNumberOfCells

    Set bCell = Range("B" & iRow)
    replace = Mid(bCell, InStr(bCell, "-") + 2, 100)
    Range("B" & iRow) = replace

    iRow = iRow + 1

Next leftLoop

End Sub

答案 1 :(得分:1)

试试这个:

result = Split(TextToSplit, " ", 3)(2)

Split(TextToSplit,"",3)将在空格上分割文本,返回从零开始的数组。最后一个参数3将分裂限制为3个部分:在第一个空间之前,在第一个和第二个空间之间,以及其他所有部分。语句末尾的(2)返回数组的最后一个元素。

希望有所帮助