0
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

上記のコードを使用してデータを抽出しようとしましたが、必要な回答を得ることができません。cell1 と cell2 に and がある場合、次のセルと同じように答えを取得する必要が
あります。 コードを修正するにはどうすればよいですか?king(anil434323)hkd3jejrew(3232213)anil4343233232213

4

2 に答える 2

3

独自の検索ルーチンを実行する代わりに、 and を使用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
于 2013-09-05T15:25:18.510 に答える
2

これはマクロである必要がありますか?セル B1 で次の数式を使用し、下にコピーします。

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

マクロでなければならない場合は、これでうまくいくはずです:

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
于 2013-09-05T15:29:30.780 に答える