如何检索位于(和)之间的数据?

Sub extractdateincells() Dim i As Integer, r As Integer, str As String For Each c In Range("a1:a10") For i = 1 To Len(c.Value) If Mid(c.Value, i, 1) = "(" Then Range("b1:b10") = Mid(c.Value, i + 1, 1) End If Next Next End Sub 

我试图使用上面的代码提取数据,但我无法得到所需的答案。
如果我在king(anil434323)hkd3jejrew(3232213)king(anil434323)hkd3jejrew(3232213) ,那么我需要在下一个单元格中得到答案anil4343233232213
我需要做什么来修复我的代码?

而不是滚动自己的search例程,使用InStrInStrRev

 Sub extractdateincells() Dim i As Integer, r As Integer, str As String Dim OpenPos As Long, ClosePos As Long For Each c In Range("a1:a10") str = c.Value OpenPos = InStr(str, "(") ClosePos = InStrRev(str, ")") If OpenPos > 0 And ClosePos > 0 Then c.Value = Mid(str, OpenPos + 1, ClosePos - OpenPos - 1) End If Next End Sub 

这是否必须是一个macros? 在单元格B1中使用此公式并抄下来:

 =TRIM(MID(SUBSTITUTE(A1,")",REPT(" ",99)),FIND("(",A1&"(")+1,99)) 

如果它必须是一个macros,这应该为你工作:

 Sub extractdateincells() Dim sCell As String With Range("A1:A10") sCell = .Cells(1).Address(0, 0, , True) .Offset(, 1).Formula = "=TRIM(MID(SUBSTITUTE(" & sCell & ","")"",REPT("" "",99)),FIND(""(""," & sCell & "&""("")+1,99))" .Offset(, 1).Value = .Offset(, 1).Value End With End Sub