アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2003です。
マクロで以下の事を行いたいです。

セル内の文字の中で
(( )) で囲まれた文字を(( )) もろとも削除して
別の列に転記したいです。

C列に品名があり、行数は都度違います。
上から順に調べて (( )) が有ったら
(( ))もろともその間の文字を削除してD列に転記する。
(( ))が無いセルはそのまま転記。
( )の場合もあるがそれは削除対象外。

品名の文字は文字数は決まっていません。MAX数も決まっていません。
また(( ))内の文字数も決まっていません。
 ( は半角です。

大変あつかましくすいませんがコードそのものを教えてください。
よろしくお願いします。



DE-500((ABC))

↓ ((ABC))を削除

DE-500


HV-32578934-B(BOH)

↓  ( )はあるが(( ))が無いから変更無し

HV-32578934-B(BOH)


AH-57BD-645(マイクロソフト)((OKウエブ))

↓ ((OKウエブ))を削除

AH-57BD-645(マイクロソフト)


BCF-562BN-DER

↓ (( ))が無いから変更無し

BCF-562BN-DER

A 回答 (2件)

ふつーに置換で一括削除します。



sub macro1()
 range("C:C").copy range("D1")
 range("D:D").replace what:="((*))", replacement:=""
end sub
    • good
    • 0
この回答へのお礼

大変役にたちました。
どうもありがとうございます。

お礼日時:2013/04/09 22:52

こんにちは!


一例です。

(( )) で囲まれた文字列は必ず最後にあるという前提で・・・
Sheetモジュールです。
尚データはC列の1行目からあるとします。

Sub Sample1()
Dim i As Long, k As Long
For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
With Cells(i, "C")
If InStr(.Value, "((") > 0 And InStr(.Value, ("))")) > 0 Then
k = InStr(.Value, "((") - 1
.Offset(, 1) = Left(.Value, k)
Else
.Offset(, 1) = .Value
End If
End With
Next i
End Sub

こんな感じではどうでしょうか?
※ (( ))で囲まれた文字列が途中にある場合は当然コードも変わってきます。m(_ _)m
    • good
    • 0
この回答へのお礼

うまく処理できました。
ありがとうございました。

お礼日時:2013/04/09 22:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A