Excelで A1セル~A100セルまでに文字列が ****(**) (****)というように入っています。 なお*は任意の文字を表す
(条件) ( )で囲まれた文字列群は2つある。
(したいこと)A1セル~A100セルまでを対象に2番目の( )で囲まれた文字列群を消去するマクロを作成したい。
どう記述すればいいか。
処理前
A1: ****(**) (****)
A2:*****(**) (****)
A3:****(**) (*****)
以下略
処理後
A1: ****(**)
A2:*****(**)
A3:****(**)
以下略
No.4ベストアンサー
- 回答日時:
#1です。
先ほどの回答は、提示された例の通り、最初の()が全角、後ろの()が半角として記述しましたが、ひょっとして全角半角が混在する場合もあるのかと考えなおし、修正します。
以下のコードは全角半角を問いません。
Sub test01()
Dim i As Integer, x As Integer, m As String
For i = 1 To 100
m = StrConv(Cells(i, 1).Value, vbNarrow)
x = InStr(m, ")")
If x > 0 Then
Cells(i, 1).Value = Left(Cells(i, 1).Value, x)
End If
Next
End Sub
この回答への補足
私の設定ミスでどちらも半角でいいです。
なお、自分の目的のためにはNO3の方の後ろの式で十分まにあいました。
なおマクロはマクロ自身の勉強のためです。
No.7
- 回答日時:
#03です
=LEFT(A9,FIND("@",SUBSTITUTE(A9,"(","@",2))-1)
SUBSTITUTE(A9,"(","@",2)
で二番目の「(」を一旦「@」に置き換えて、FIND関数で「@」が何文字目にあるかを求めています。左から(その文字数-1)文字分をLEFT関数で切り出したのが上記式です。
>右括弧の数と左括弧の数があいません。
合っていると思いますよ。SUBSTITUTE関数で置き換える文字"("の括弧も数えていませんか? この"("は数には入れません。
No.6
- 回答日時:
左から2つ目の "(" を含め それより右側を消去する という条件で宜しければ、
こんな感じで如何でしょうか。 (Excel97も 対応)
Sub test()
Dim Pt As Integer
Dim Rng As Range
For Each Rng In Range("A1:A100")
Pt = InStr(InStr(Rng.Value, "(") + 1, Rng.Value, "(")
If Pt > 0 Then Rng.Value = Left(Rng.Value, Pt - 1)
Next
End Sub
No.5
- 回答日時:
一例ですが...
SUB MACRO1()
For Each RG In Range("A1:A100")
If LEN(RG) = 0 Then Goto RGEND
RX = Strreverse(RG) '文字反転
RY = Instr(1,RX,"(") '開始の"("を検索
RZ = Mid(RX,RY+1,LEN(RX)-RY) '"("以前を除去
RANGE(RG.Address) = Strrevaerce(RZ) '再度反転してセット
RGEND:
Next RG
End Sub
No.3
- 回答日時:
補足質問です
aaaaa(bb)(cccc)dd のように二つめの括弧の後ろに文字列がくることはありますか?
またaaaaa(bb) のように二つめの括弧がない場合がありますか。
またマクロがよいのですか
aaaaa(bb)(cccc) を aaaaa(bb)にするだけなら
=LEFT(A9,FIND("@",SUBSTITUTE(A9,"(","@",2))-1)
二つめの括弧がない場合を考慮すると
=IF(ISERROR(FIND("@",SUBSTITUTE(A9,"(","@",2))),A9,LEFT(A9,FIND("@",SUBSTITUTE(A9,"(","@",2))-1))
のような関数でもできると思いますが…
もしマクロを書くとしても上記式のロジックそのままになると思います
この回答への補足
=LEFT(A9,FIND("@",SUBSTITUTE(A9,"(","@",2))-1)
右括弧の数と左括弧の数があいません。
@はどういう意味でしょうか。
以上宜しくお願いします。
二つめの括弧の後ろに文字列がくることはありますか?
→ありません。
二つめの括弧がない場合がありますか。
→ありませんが、その場合は何もしないでいてほしいです。
ご回答ありがとう、検証しています。まずはお礼まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Excel(エクセル) エクセルのことで教えてください。 A1セルに、 別シートのA1セルが1のときは「A」、2のときは「B 4 2023/02/24 23:08
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- Excel(エクセル) Excelのtextbox 1 2022/04/15 15:26
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) 一つのセルに複数の関数を入力する方法 4 2022/09/30 13:42
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VisualStudio2022でC言語プログ...
-
VC2008+Qtの文字化け
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
processing エラーで、 "cannot...
-
jsp~jspにhiddenを使って変数...
-
フォームを開くときに、コンボ...
-
エクセルのマクロについて教え...
-
Excel-vba 文字列と変数を...
-
vbsでテキストファイル内の文字...
-
EXCEL/VBA 変数の値をクリップ...
-
VBAのWorksheetFunctionの引数...
-
【エクセル】 関数による電子...
-
[VBS]変数を定数に変換する方法...
-
VBAで配列のNULL判定
-
足して100になるような乱数のア...
-
excelの、ある数式内の{}の意...
-
RichTextBoxの改行を認知してく...
-
C#で動的にコントロールを取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VisualStudio2022でC言語プログ...
-
C言語で全角文字を扱いたいので...
-
Accessで文字列のバイト数読み込み
-
HTML5では文中の半角不等号はち...
-
アンダーバーとバックスラッシュ
-
VBA シート上にドロップダウン...
-
VC2008+Qtの文字化け
-
正規表現で英(大小)と数字を必...
-
Ruby 文字コード判別
-
Cpadで文字化け
-
文字列の引き渡し
-
文字数の多い単語だけ抽出(多...
-
セル内の一部文字列を消去のマクロ
-
rubyの正規表現について
-
shift_jisの文字コードを出力さ...
-
ruby 正規表現の日本語とアルフ...
-
Ruby(1.9)で2進表示として文...
-
Kシェルでの桁数取得
-
Ruby言語にて、全角カナ⇔半角カ...
-
C言語 exitの使い方
おすすめ情報