2016-08-25 14 views
1

Excel VBAコードを使用してセル内のテキストの周囲に角括弧を挿入することはできますか?Excel VBAを使用してセル内のテキストの角括弧を挿入する

は、それは最初のカンマの前にテキストを検索する必要があり、最初のコンマの前には角括弧がない場合は、[]角括弧

セルA内のテキストは、この形式であるとそれを包みます。それはすべて私が私はVBAの知識を持っていないが、数千行があるかもしれないとして、それは最高のVBAを使って処理されるだろうと思った

[A12345], blah, blah, blah, blah blah 
[B45678], blah, blah, blah, blah blah 
[C97665], blah, blah, blah, blah blah 
[D89798], blah, blah, blah, blah blah 
[B97494], blah, blah, blah, blah blah 
[Y34987], blah, blah, blah, blah blah 

にそれを実行するために必要な1つのテキスト文字列

A12345, blah, blah, blah, blah blah 
[B45678], blah, blah, blah, blah blah 
C97665, blah, blah, blah, blah blah 
D89798, blah, blah, blah, blah blah 
[B97494], blah, blah, blah, blah blah 
Y34987, blah, blah, blah, blah blah 

である

enter image description here

:のようなデータを持つ

+1

確かに可能です...私は 'InStr'関数を見てみましょうhttp://www.exceltrick.com/formulas_macros/vba-instr-function/最初のコンマを探してから文字列の最初の文字....それを試してください、あなたが立ち往生した場合は、あなたが克服しようとしている特定の問題を持つ新しい質問としていくつかのコードを投稿してください。 –

+3

正直言って、あなたはそれを簡単に簡単にエクセル式で管理することすらできます。 –

+0

空白を区切り文字として使用し、新しい値の間に列を追加し、テキストの前後に[["と"] "を入れて値を連結します。 – Lowpar

答えて

1

この小さなマクロを実行:

Sub bracket() 
    Dim r As Range, N As Long, s As String 
    Dim i As Long 

    N = Cells(Rows.Count, "A").End(xlUp).Row 

    For i = 1 To N 
     ary = Split(Cells(i, 1).Text, ",") 
     If Left(ary(0), 1) = "[" Then 
     Else 
      ary(0) = "[" & ary(0) & "]" 
      Cells(i, 1).Value = Join(ary, ",") 
     End If 
    Next i 
End Sub 

が生成されます:

enter image description here

EDIT#1:

を私たちに必要な列内のデータEで動作するように元のコードを適応させるために変更するコード行:

Sub bracket() 
    Dim r As Range, N As Long, s As String 
    Dim i As Long 

    N = Cells(Rows.Count, "E").End(xlUp).Row 

    For i = 1 To N 
     ary = Split(Cells(i, 5).Text, ",") 
     If Left(ary(0), 1) = "[" Then 
     Else 
      ary(0) = "[" & ary(0) & "]" 
      Cells(i, 5).Value = Join(ary, ",") 
     End If 
    Next i 
End Sub 

Cells(13,1)A13、及びCells(13,5)は細胞E13を指すことになる細胞を意味するためです。

+0

これは、別の列を作成するのではなく、問題を現場で解決するので、これよりも優れています。ありがとうございます – BradleyS

+0

@ブラッドリー............フィードバックに感謝! –

+0

これをE列で動作させようとしましたので、 "A"をN = Cells(Rows.Count、 "E")に変更して終了(xlUp).Row、それでも列Aのテキストを変更します。 – BradleyS

関連する問題