• ベストアンサー

エクセル2003でのセル内文字列操作マクロ

あるセルにある文字列を置換し、その置換された文字列を別のセルに移すことをしたいと考えています。 <例> 0000.1111.2222.3333 ↓置換 00:00:11:11:22:22:33:33 (文字列3番目ごとににコロン挿入) 上記のように変換できるマクロメソッド、またロジックなどを教えていただけませんか?また可能でしょうか? (上記の例は逆のパターン(下の文字列から上の文字列への置換)でも結構です。) よろしくお願いします。

  • fm0606
  • お礼率13% (100/761)

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

  • ベストアンサー
  • hakone
  • ベストアンサー率54% (40/73)
回答No.3

ひとつのセルの文字列を変換して、右隣のセルに書き出す。 Sub sample()  Dim t As String  Dim i As Long  t = ActiveCell.Text  t = Replace(t, ".", "")  For i = Len(t) - 1 To 3 Step -2   t = WorksheetFunction.Replace(t, i, 0, ":")  Next i  ActiveCell.Offset(0, 1).Value = t End Sub 選択範囲の文字列を置換して、右に書き出す。 Sub sample2()  Dim t As String  Dim i As Long  Dim rng As Range  For Each rng In Selection   t = rng.Text   t = Replace(t, ".", "")   For i = Len(t) - 1 To 3 Step -2    t = WorksheetFunction.Replace(t, i, 0, ":")   Next i   rng.Offset(0, 1).Value = t  Next End Sub んで、逆。 Sub sample3()  Dim t As String  Dim i As Long  Dim rng As Range  For Each rng In Selection   t = rng.Text   t = Replace(t, ":", "")   For i = Len(t) - 3 To 3 Step -4    t = WorksheetFunction.Replace(t, i, 0, ".")   Next i   rng.Offset(0, 1).Value = t  Next End Sub

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

ユーザー定義関数を使う方法です。 書式: StrSprit(文字列式1,数値1,文字列式2) 引数1:「文字列式1」には、置換する文字列を含む文字列式を指定します。 引数2:「数値1」には、何文字おきに区切るかを数値で指定します。 引数3:「文字列式2」には、挿入する区切り文字列を文字列式で指定します。 戻り値: 「文字列式1」を既存区切り文字を除き、「数値1」で指定した文字数ごとに      「文字列式2」で指定した区切り文字を挿入します。 使用例1:  StrSprit("0000.1111.2222.3333",2,":") ----> 00:00:11:11:22:22:33:33 使用例2: セルA1に "0000.1111.2222.3333" が入力されているとき、  =StrSprit(A1,2,":") -------> 00:00:11:11:22:22:33:33 が表示されます。 コードの設定方法 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。   (必要により、コードの5行目で「既存区切り文字」を追加/変更します。) 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を  「中」にして[OK]します。 こんな感じで如何でしょうか? Function StrSprit(Org As String, N As Integer, S As String) As String Dim Ar Dim C As Integer Dim ResStr As String Ar = Array(".", ",") ' <---- 既存区切り文字(複数指定可) For C = 0 To UBound(Ar)   Org = Replace(Org, Ar(C), "") Next C For C = 1 To Len(Org)   ResStr = ResStr & Mid(Org, C, 1)   If C < Len(Org) And C Mod N = 0 Then ResStr = ResStr & S Next C StrSprit = ResStr End Function

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

Sub test01() Dim s As String Dim sh As String a = "0000.1111.2222.3333" Cells(1, "A") = a '-------セルから値取得- a = Cells(1, "A") '--.を取り除く s = Replace(a, ".", "") MsgBox s '--2バイトごとに:を挿入 sh = "" For i = 1 To Len(s) Step 2 sh = sh & Mid(s, i, 2) & ":" Next i '---最後の:を取り除く sh = Mid(sh, 1, Len(sh) - 1) MsgBox sh '-----セルに値設定 Cells(2, "A") = sh End Sub MsgBox は用済み後省くこと。

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

文字列3番目ごとにコロン「挿入」としながら、例には「.」があるのに、置換後では「:」になっていますが? また、変換前の文字列の文字数は固定?不定? 固定なら関数一発でできますが、不定ならマクロで関数を作らないとダメかも。 ということで、補足をお願いします。

関連するQ&A

  • 【エクセル】文字列置換について

    エクセルでの文字列置換についてお教えください。 一部の文字列が含まれていたら、置換するという処理は可能ですか? 例えば、 ”ああああいいいい”  ”ああああうううう” ”ああああええええ” セルに、上記の文字列が、あったとして、 ”ああああ”が、含まれていたら、 すべてのセルを、”おおおお” に、置き換える(差し替える)という処理を想定しています。 よろしくお願いいたします。

  • エクセルの文字列置換マクロに関するご相談

    下方のマクロを実行することにより、 文字列リストの内容に基づいて、 別シート(作業)内の文字列を変換することができます。 文字列からコード値へ変換することを目的にマクロを埋め込んだのですが、 別シート(作業)の文字列をコード値に変換した際、3桁くぎりのコード値が並んだ場合に、 自動で数値として認識されてしまいます。 ※別シート(作業)のセルを文字列し設定しても発生します。 プログラムで回避手段があるようでしたらご教示いただければ幸いです。 例)文字列リストシート A B さる 10 ぞう 15 ごりら 101 きりん 102 わに 103 かば 104 マクロ実行前の作業シート A さる,ぞう ごりら ごりら,きりん,わに さる,ごりら マクロ実行後の作業シート A 10,15 101 101102103 10101 上記マクロ実行後のシートの3~4行目のように、 カンマが取れることを防ぎ、文字列として代入したい所存です。 <マクロ> Sub 文字列リストに基づき連続して置換する() i = 2 Do x1 = Sheets("文字列リスト").Cells(i, 1) x2 = Sheets("文字列リスト").Cells(i, 2) Sheets("作業").Cells.Replace _ What:=x1, Replacement:=x2, _ SearchOrder:=xlByColumns, MatchCase:=True i = i + 1 Loop Until Sheets("文字列リスト").Cells(i, 1) = "" End Sub ご教示いただければ幸いです。 よろしくお願いいたします。

  • Excel操作

    アプリケーションのカテゴリが無かったので こちらで質問していいものかわかりませんが EXCELでちょっと困ってるので、教えて下さい。 SQLで流すための大量データをExcelで作成した のですが、文字列になる列にシングルクォートを 値の先頭に2つ(1つは文字列変換でエスケープ されるため)最後に1つ挿入したいです。 例) 111 → '111' 222 → '222' 333 → '333' なにかをキーにして一括置換だと、かなりの パターンのデータなので、とても労力が必要になります。 すばやく簡単に対応出来る方法などありますか? 宜しくお願いします。

  • エクセルのマクロについて 文字列操作について

    文字列操作で困っています。 A3セル以下、A列に、04/、03/、99/。。。と文字列が入力されており、それぞれ、最初の2文字を取り出して数字に変換し、それぞれを変数 qwe1 qwe2 qwe3 ... に代入したいのです。 そのための構文が知りたいのです。 また、文字列のまま、たとえば上記の/を、変数 asd に代入するにはどうしたらよいのでしょうか? ちなみに、 Range("B3").Select ActiveCell.FormulaR1C1 = "=VALUE(MID(R[-2]C[1],1,2))" という形の構文で、一旦エクセルのセルに代入して、再度、変数に放り込む形だとうまくいくのですが、数列、数十行同じ作業を繰り返すために、for next 構文を使わないと、不便で使い物になりません。 そこで、R[-2]C[1] の部分に cells(qwe,1)を使ってもエラーが出てうまく作動しませんでした。 なお、エクセル2003、OS=XPです。 再度要約しますと、 1.文字列の一部を取り出して数字に変換し、それを変数に代入したい。 2.文字列の一部の文字を取り出して、それを変数に代入したい。 3.上記1,2を繰り返すので、その繰り返すことが出来る構文が知りたい。 以上です。 どなたか教えてください。

  • エクセル 特定の文字を検索して置き換えるマクロ

    次のような連続作業をマクロでできますか。 A列にある特定の文字を検索して、その行にあるB列セルの文字(不定)とそのB列の1行下にあるセルの文字(不定)を連結または置換させてB列に表示 (それぞれ単独に使用) 例 A100に「○○○」の文字を見つけたら、B100にある「□□□□」とB101にある「△△」を連結させB100に「□□□□△△」と置換表示 置き換える場合 A100に「○○○」の文字を見つけたら、B101にある「△△」をB100に「△△」と置換表示 同列の置換は例題でも見つけられて利用できていますが、ひとつ下のセルがからむというのがミソです。 よろしくお願いします。 Windows7/office2013

  • セル内の文字列操作について

    Excelでセル内の文字列を操作したいのですが、Excelの標準の関数では出来そうにないので、どなたかお力をお貸しください。 1つのセル内に、文字列や数値が複数入っています。 (例) Excel 12 りんご Word 11 このセルを調べて、数値のデータが複数入っている場合、最大値のみを表示させ、残りの数値データは削除したいのです。 (結果) Excel 12 りんご Word この処理の対象はセル内の数値データであって文字列には作用させず、結果的には文字列はそのまま表示させたいのです。 Excelの文字列に関する関数を調べてみたのですが、該当するものがなく、VBAを使用しなくてはならないのかもしれません。処理するデータが大量なため、VBAマクロなどで処理できれば大変ありがたいのですが、どなたかご存知の方がいらっしゃいましたら、ご教授くださいませ。どうぞよろしくお願いいたします。

  • エクセルのマクロで検索

    教えてください。 エクセルにいろいろなセルに文字列が並んでいます。 フォームを作成し、テキストに文字列1、文字列2を指定します。 そこからある文字列1を検索し、もし見つかればその見つかった文字列1の右のセルに指定した文字列2を挿入したいのです。右のセルに文字列3がすでにある場合はその文字列3の下のセルに文字列2を挿入します。 もしみつからなければ、Aの一番下のセルに文字列2を挿入します。 といったプログラムをコーディングしたいのですが、マクロに関しては初心者です。VBは少しなら分かります。 できれば分かりやすく教えて頂けないでしょうか。 よろしくお願いします。

  • Excel 2003のマクロについて

    セルにある文字列に”-”を加え、別のセルに移したいです。 例/ABCDEFGHIJ→ABC-DEFGH-IJ としたいです。 文字列の“-”の入る位置は、「例/」の位置で固定です。 Excel2003を使用しています。 マクロ等で一発変換できる方法はありますか? マクロ初心者なので、教えて下さい。宜しくお願い致します。

  • エクセル 置換後の文字列について

    エクセル2003です 置換後の文字列について質問させてください 特定のセルに文字を入力し 例 C100に(9月)等 検索と置換にて 置換後の文字列を C100のテキストに 置換したいのですが 入力時にC100を選択する方法がわかりません  よろしくお願い致します

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

専門家に質問してみよう