• ベストアンサー

VBA でセルの文字列に"-"等の文字を挿入したい

VBA でセルの文字列に"-"等の文字を挿入したい エクセルでA列に品番がずらっと並んでいる状態です。 この品番がすべて"-"が抜けています。 頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? 例 55548855→55548-55 また 55548-55→55548855 のように"-"を抜く方もわかれば教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

対象のセル範囲を選んで実行します。 Sub InsertMinus()  Dim h As Range  For Each h In Selection   h = Application.Replace(h.Value, 6, 0, "-")  Next End Sub Sub RemoveMinus()  Dim h As Range  For Each h In Selection   h = Application.Replace(h.Value, 6, 1, "")  Next End Sub

ponysaito
質問者

お礼

ありがとうございます。 まさに私の欲しかったものです。 初心者の私にも理解しやすい作りです。 勉強になりました。 どうもありがとうございました。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルにお示しの数値があるとして B1セルに答えを表示させるとしたら Range("B1").Formula="=REPLACE(A1,6,1,"-")" または Range("B1").Formula="=REPLACE(A1,6,1,MID(A1,5,1))"

ponysaito
質問者

お礼

ありがとうございます。 ただ、"-"を抜く方はよかったのですが、 入れる方はエラーが出てうまくいきませんでした。 ありがとうございました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? v = Range("A1", Cells(Rows.Count, "A").End(xlUp)) For i = 1 To UBound(v)   v(i, 1) = Left(v(i, 1), 5) & "-" & Mid(v(i, 1), 6) Next Range("A1").Resize(UBound(v)).Value = v >"-"を抜く方もわかれば教えてください。 With Range("A1", Cells(Rows.Count, "A").End(xlUp))   .Replace What:="-", Replacement:="" End With

ponysaito
質問者

お礼

ありがとうございます。 "-"を入れる方はよかったのですが、 抜く方で、 "1741064300-70"のようにもともと"-"が入っているものを "17410-64300-70"としてその後また"-"を抜くときに全部抜けてしまいました。 私の説明不足でした。申し訳ありません。 でも、これはこれで役に立つと思いますので 大変感謝しております。 ありがとうございました。

  • chuchuo
  • ベストアンサー率45% (99/217)
回答No.1

一例です。 55548855→55548-55 str1 = "55548855" str2 = left(str1,5) str3 = right(str1,2) str4 = str2 & "-" & str3 55548-55→55548855 str1 = "55548-55" str4 = replace (str1,"-","8")

ponysaito
質問者

お礼

早速のお返事ありがとうございます。 ただ、教えていただいたものを subとendで囲んでもうまくいきませんでした。 初心者の私には何がまずいのかよくわかりませんでした。 申し訳ありません。 ありがとうございました。

関連するQ&A

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

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

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

  • エクセルVBAでの文字列抽出とセルへの出力

    エクセルVBAで文字列を検索して、検索した文字列を他のセルへ出力する方法を探しております。状況を図で説明すると、 A1セル:aaa\bbb\item1\ddd A2セル:aaa\bbb\ccc\item2\ddd A3セル:aaa\bbb\ccc\ddd\item3\eee このような状態からitemを検索して、B1セルに B1セル:item1 B2セル:item2 B3セル:item3 と表示させたいです。エクセルVBA初心者なものでRegExpを使うのかな、というところまではたどり着きましたが、そこから先にすすめません。 何か良い方法をご存知の方、教えていただきたいです。よろしくお願いいたします。

  • Excel文字列の連結について教えてください(VBA)

    Excelの文字列の結合について教えてください。 色々調べたのですが、VBA自体がよくわからず困っています。 やりたい事は、(Excel表をご参考) 『セルA1とB1とA2の文字を固定で、セルA3以降の文字以降を  順次連結してcsvに書き出すVBAを作成したい。』 どうしても繰り返す連結マクロがわかりません。 ExcelVBAに詳しい方、教えてください。 よろしくお願いします。 結果例) 20080501A01 20080501A02 20080501B01 20080501C01   ・   ・(300件以上続きます) <Excel表>    A列  B列 1  2008  05 2  01    3  A01 4  A02 5  B01 6  C01 7  ・ 8  ・

  • VBAでセル内の文字列を一行にする方法

    ExcelのVBAで、セル内に折り返しで3行に書かれている文字列を、各文字列間に空白を1つ入れて、1行につなげるにはどうしたらいいですか

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

    例えば、A列(A2より下のセル)のセル内にある文字列が、それぞれ対応するB列(B2より下のセル)のセル内にあった場合、該当文字列のフォントの色を変えたい(例えば「赤」)のですが、VBAで一括処理とかできるのでしょうか? <例> A列      B列 テスト     このテストは・・・ → 「テスト」の部分のみ赤色にしたい。 サンプル   サンプル     → 文字列全部分の「サンプル」を赤色にしたい。 どうかご教示の程よろしくお願いいたします。

  • セル内の文字列に複雑な処理をしたい

    セルの中の複数の異なる文字列を以下のように処理したいのですが、Excelの標準の文字列操作の関数で試行錯誤してみたのですが、どうもうまくできませんでしたので、ご存知の方がいらっしゃいましたらご教授ください。VBAで処理しないとできないかもしれませんがよろしくお願いします。 あるリストのC列に備考欄が設けてあり、次のようなデータが入っています。 4/30 みかんを買った(強制改行して) 5/1 りんごを売った 5/2 ぶどうを食べた 5/5 すいかを買った このセルを調べて、 (1) セル内に"みかん"と"りんご"という文字列があったら、これを取り出して、右隣のセルに表示           (結果)⇒ みかん りんご (2) セル内に"みかん"と"りんご"という文字列があったら、これを"A","B"に置き換えて、右隣のセルに表示          (結果)⇒ A B (3) セル内の数値データと"を食べた"、"を買った"、"を売った"を取り除いて、右隣のセルに表示          (結果) ⇒ みかん りんご ぶどう すいか   (4) セル内に"か"を含む文字列があったら個数に関係なく"A"に置換して右隣のセルに表示             (結果) ⇒ A   すべて取り出したい文字列(上の例ではみかん、りんご)や置換したい文字列(A、B)以外の文字列は全てクリアして表示しないようにします。少し複雑ですが、やり方をご存知の方がいらっしゃいましたら、お教えください。

  • エクセル 文字列検索と検索した文字列が含まれるセルへのジャンプ

    エクセル教えてください。 VBAは使ったことがありません。 現在Q&Aを作っています。 かなりボリュームが増えてしまったので、 文字列検索ができるようにしたいと思っています。 そこで、あるセルに調べたい文字列を入力し、 検索ボタンを押すと、その文字列が含まれるセルにジャンプする。 こんな機能は、エクセルでできませんでしょうか? マクロを組んだりすればよいのでしょうか? 教えてくださいー。

  • ExcelのVBAでアクティブシートの特定の文字列の入ったセルを全て選

    ExcelのVBAでアクティブシートの特定の文字列の入ったセルを全て選択し、文字をクリアしたいのですが、構文を教えて下さい。ちなみに、文字列というのは『jpg』です。 挿入した画像を一括削除する場合は、ActiveSheet.Shapes.SelectAll で全て選択できたのですが、文字列だとよくわかりませんでした。 Find("jpg")でやってみると最初の『jpg』だけが選択されてシート内の全てを選択できないので、全て選択・クリアできる方法を探しています。

  • VBAマクロで結合セルを含む列に列挿入する方法?

    お世話になっています。 下記のエクセルVBAマクロで、 列挿入処理をしているのですが、 列に結合セル(行方向)がある場合にだけ、 列選択がうまくできず、 目的と異なる処理をしてしまいます。 ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select Selection.Insert Shift:=xlToRight 新しいマクロの記録で やってみたのですが、 上記マクロが生成されただけでした。 手作業では 列の上のアルファベットを選択して、 列挿入できるので、 何かいい方法があるのは? と思います。 どなたかよろしくお願いします。

専門家に質問してみよう