人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの置換で正規表現が使えなくて困っています。「EILV-NA2006012345」というデータを「NA06」「12345」と二つのセルに分割したいのです。後ろの6桁は頭が0だったら削除したいです。また後々にVBAに組み込みたいとおもっているのですが、その前に正規表現での置換ができません。たとえばタブを入れるとしたら「\t」でいいのでしょうか?

●質問者: miya53015
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Excel VBA セル データ 正規表現
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●15ポイント

http://wiki.fdiary.net/toshiaki/?%C0%B5%B5%AC%C9%BD%B8%BDExcel%A...

Excel用の正規表現のアドインがありますが、このようなものを使わないと正規表現は できないでしょう。

なお、質問にある内容だと 置換では ちょっと難しいかもしれません。

VBAで チェックして 分けたらいいでしょう。

◎質問者からの返答

早々とご回答ありがとうございました!

Excelで正規表現はできないんですね。知らなかったです。教えていただいたHP、大変参考になりました。検討してみます。


2 ●
●55ポイント ベストアンサー

こんな感じのVBAではいかがでしょうか。

A列に「EILV-NA2006012345」のような文字列が入っていた場合、B列、C列にそれぞれ「NA06」、「12345」をセットします。

(正規表現の部分などは必要に応じて見直してください。)

Option Explicit
Sub Sample1()
 Dim RE, strPattern As String, lastRow As Long, i As Long, str1 As String, str2 As String, num1 As Long, reMatch, reSubMatch
 Set RE = CreateObject("VBScript.RegExp")
 ' 正規表現用の文字列
 ' 先頭5文字は使わない
 ' 次の2文字の英数字をSubmatches(0)用に保存
 ' 次の2文字の数字は使わない
 ' 次の2文字の数字をSubmatches(1)用に保存
 ' 次の6文字の数字をSubmatches(2)用に保存
 strPattern = "^[-A-Z0-9]{5}([-A-Z0-9]{2})[0-9]{2}([0-9]{2})([0-9]{6})$"
 With RE
 .Pattern = strPattern ' 検索パターンを設定
 .IgnoreCase = True ' 大文字と小文字を区別しない
 ' 最終行の取得
 lastRow = Cells(1, 1).SpecialCells(xlLastCell).Row
 ' 2行目、3行目の内容をクリア
 Range(Cells(1, 2), Cells(lastRow, 3)).ClearContents
 i = 1 ' カウンタ用の変数初期化
 ' 1行目から最終行まで順に処理
 While i <= lastRow
 Set reMatch = .Execute(Cells(i, 1).Value) ' 1列目(A列)を1行ずつチェック
 ' 正規表現がヒットした場合の処理
 If reMatch.Count > 0 Then
 ' 括弧内の値を取得
 Set reSubMatch = reMatch(0)
 str1 = reSubMatch.Submatches(0)
 str2 = reSubMatch.Submatches(1)
 num1 = reSubMatch.Submatches(2) ' 数値(Long)に代入することで前ゼロを削除
 ' MsgBox (str1 + str2)
 ' MsgBox (num1)
 Cells(i, 2).Value = str1 + str2 ' 2列目(B列)に値をセット
 Cells(i, 3).Value = num1 ' 3列目(C列)に値をセット
 End If
 i = i + 1
 Wend
 End With
 Set RE = Nothing
End Sub

参考になれば幸いです。

◎質問者からの返答

丁寧なご回答ありがとうございます!!

自分ではとってもこんなマクロは組めません。

助かりました!早速、使わせていただきます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ