• 締切済み

Excelの置換機能で文字列の部分削除

Excelの置換機能を使って、あるパターンの文字列の特定の部分のみ削除すると言うことは可能でしょうか? <文字列例> AB01234-56789 のハイフン以下(-56789)のみを削除したい 対象の文字列パターンは、最初の2桁がアルファベットで固定、そのあと数字が5桁(ユニーク)続き、ハイフン、その後ユニークな文字列(数字5桁) さらに言うと、ファイル内にはこのパターン以外の文字列も存在している(ハイフン含む)ので、上記のパターンの文字列のみをマッチングさせ、ハイフン以下を削除したいのです。 やはり、VBAとかで正規表現使わないと無理ですかね?? 数万件の大量のデータの中から上記処理をせねばならず困っております・・ ご教授いただけると幸いです。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! たびたびごめんなさい。 投稿後に気づきました。 前回のコードで、最後から2行目と3行目のコードを入れ替えてください。 >Application.ScreenUpdating = True >Next i を >Next i >Application.ScreenUpdating = True です。 そうでないとスピードアップにならないと思います。 何度も失礼しました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! なかなか他の方からの回答がないようなので・・・ VBAでの一例です。 データはA列のみで1行目からあるとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long Dim str1, str2, str3, str4 As String Application.ScreenUpdating = False For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row str1 = Left(Cells(i, 1), 1) str2 = Mid(Cells(i, 1), 2, 1) str3 = Mid(Cells(i, 1), 3, 5) str4 = Right(Cells(i, 1), 5) If Len(Cells(i, 1)) = 13 And IsNumeric(str3) And IsNumeric(str4) Then If str1 Like "[A-z]" And str2 Like "[A-z]" And Mid(Cells(i, 1), 8, 1) = "-" Then Cells(i, 1) = WorksheetFunction.Substitute(Cells(i, 1), Right(Cells(i, 1), 6), "") End If End If Application.ScreenUpdating = True Next i End Sub 'この行まで ※ 無理矢理って感じのコードで、実際は必要のない記述があるかもしれません。 ※ とりあえず質問内容を忠実に条件付けしてみました。 尚、一旦マクロを実行すると元に戻せませんので、別Sheetにデータをコピー&ペーストしてマクロを試してみてください。 以上、参考になれば良いのですが・・・m(_ _)m

関連するQ&A