• ベストアンサー

エクセルで文字列の先頭の”・”を一括削除する方法を教えてください。

文字列の先頭の”・”を削除したいのですが、悩んでます。 具体的には以下のデータ(文字列) ・○△□ ●○・△○ ・□○・○× を ○△□ ●○・△○ □○・○× としたいのですが、教えていただけませんでしょうか? ちなみに、大量のデータがあります。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

マクロで正規表現を用いて先頭の「・」を削除する方法もあるのですがもっと簡単には入力された列の隣に =IF(LEFT(A1,1)="・",RIGHT(A1,LEN(A1)-1),A1) と入力して下方向にコピーします。 すると先頭の「・」が消えますから、そのデータをコピーして、元の列に「編集」→「形式を選択して貼り付け」→「値」で貼り付けると、元のデータが「先頭の・なし」になります

MAMI-NORI
質問者

お礼

こんなに早く回答をいただけて嬉しいです。早速使わせていただきました。サクサク行きました。 色々考えていただいて、ありがとうございました。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんにちは。 #4の回答者です。 せっかく、#7のimogasiさんの方で、正規表現のサンプルを出していただいたので、私も作ってみました。全角、半角、Uniocode の三つの中黒点の除去をするように変更してみました。 列は、A列になっておりますから、適当に変更してください。 先頭にスペース等が含まれていても、それは無視されます。 '標準モジュール Sub RegExpUsedMacro()   Dim RE As Object   Dim strPattern As String   Dim c As Range   Dim chr1 As String '全角中黒   Dim chr2 As String '半角中黒   Dim chr3 As String 'Unicode 中黒      chr1 = "・"   chr2 = "\uff65"   chr3 = "\u2022"   strPattern = "^\s*[" & chr1 & chr2 & chr3 & "](.+)$"      Set RE = CreateObject("VBScript.RegExp")   With RE     .Pattern = strPattern     .IgnoreCase = True     .Global = False '直接関係ないけど、1回きりは、False     Application.ScreenUpdating = False     For Each c In Range("A1", Range("A65536").End(xlUp))       If .Test(c.Value) Then         c.Value = .Execute(c.Value).Item(0).SubMatches(0)       End If     Next c     Application.ScreenUpdating = True   End With   Set RE = Nothing End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

VBA(VBS)で正規表現を使ってやってみました。 A1:A10の範囲で 先頭に「・」(全角)があれば、削除します。 Sub Sample1() Dim RE, strPattern As String, r As Range Set RE = CreateObject("VBScript.RegExp") strPattern = "^・" With RE .Pattern = strPattern ''検索パターンを設定 .IgnoreCase = True ''大文字と小文字を区別しない .Global = True ''文字列全体を検索 For Each r In Range("A1:A10") If .Test(r.Formula) Then r = Right(r, Len(r) - 1) End If Next r End With Set RE = Nothing End Sub 下記のサイトを見て修正。 http://officetanaka.net/excel/vba/tips/tips38.htm If Mid(a,1,1)="・" Then の方がずっと簡単だが、 エクセルで正規表現に拘って調べてみました。 Right(r, Len(r) - 1) のところも、先頭を除く文字列を、正規表現で、よう表現できず、とりあえずこれで逃げた。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.6

◆こんな方法もありますよ =REPLACE(A1,1,LEFT(A1)="・",)

MAMI-NORI
質問者

お礼

参考(勉強)になりました。色々考えていただいて、ありがとうございました。

noname#204879
noname#204879
回答No.5

=MID(A1,1+(LEFT(A1,1)="・"),1024)

MAMI-NORI
質問者

お礼

色々考えていただいて、ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 マクロを作ってみました。 標準モジュールへの取り付け方: Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、 Alt + Q で、画面を閉じます。 実行の仕方 後は、Alt + F8 で、「MidotClear 」をクリックして実行してみてください。 マウスで選択する場合は、'Set r = Selection  の 先頭の「 '(半角のシングルクォーテーション)」 をはずして、 'Set r = Activesheet.UsedRange  と、先頭に「'」を入れてください。 ただし、先頭にスペースがあっても無視されます。「・」中黒点は、JISの中黒点です。 Unicode の中黒点は、 InStr(1, Trim(c.Value), "・", 1) のところを、Unicode に書き換えてください。また、以下のマクロは、「・」中黒点の半角・全角は関係ありません。同じように扱います。 '標準モジュール -------------------------------------------------------------------------------- Sub MidotClear()   Dim r As Range   Dim c As Range   Set r = ActiveSheet.UsedRange 'シートの使用部分全体   'Set r = Selection 'マウスで選択する場合   Application.ScreenUpdating = False   If r.Count < 2 Then Exit Sub   For Each c In r     If InStr(1, Trim(c.Value), "・", 1) = 1 Then '先頭にある場合       c.Value = Mid$(Trim(c.Value), 2)     End If   Next c   Application.ScreenUpdating = True   Set r = Nothing End Sub

MAMI-NORI
質問者

お礼

色々考えていただいて、ありがとうございました。

  • nachocho
  • ベストアンサー率26% (24/90)
回答No.3

NO.2です。 すみません、No.2の方法だとすべての「・」が削除されます。 先頭の「・」だけですよね。ごめんなさいm(_ _)m

  • nachocho
  • ベストアンサー率26% (24/90)
回答No.2

入力されている列を指定して ctrl+H で置換します。  検索する文字列>「・」  置換後の文字列>には何も入力しません で、そのまま「すべて置換」してあげればOKです。

関連するQ&A

専門家に質問してみよう