重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

文字列の先頭の”・”を削除したいのですが、悩んでます。
具体的には以下のデータ(文字列)
・○△□
●○・△○
・□○・○×

○△□
●○・△○
□○・○×
としたいのですが、教えていただけませんでしょうか?
ちなみに、大量のデータがあります。

A 回答 (8件)

マクロで正規表現を用いて先頭の「・」を削除する方法もあるのですがもっと簡単には入力された列の隣に


=IF(LEFT(A1,1)="・",RIGHT(A1,LEN(A1)-1),A1)
と入力して下方向にコピーします。

すると先頭の「・」が消えますから、そのデータをコピーして、元の列に「編集」→「形式を選択して貼り付け」→「値」で貼り付けると、元のデータが「先頭の・なし」になります
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/11 20:28

こんにちは。


#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
    • good
    • 0

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)
のところも、先頭を除く文字列を、正規表現で、よう表現できず、とりあえずこれで逃げた。
    • good
    • 0

◆こんな方法もありますよ


=REPLACE(A1,1,LEFT(A1)="・",)
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/11 20:25

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/11 20:26

こんばんは。



マクロを作ってみました。

標準モジュールへの取り付け方:

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
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/10/11 20:26

NO.2です。


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

入力されている列を指定して


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

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