• 締切済み

エクセルのマクロについて質問、次のマクロが欲しいです。「選択した範囲のセルに左から○○番目に半角スペースを挿入」

エクセルのマクロについて質問、次のマクロが欲しいです (1)選択した範囲のセルに左から○○番目に半角スペースを挿入。 例:○○を1とした場合 1234 5678 9101 1235 5679 9102 1236 5680 9103 ↓ 1■234 5■678 9■101 1■235 5■679 9■102 1■236 5■680 9■103 *■はスペースのつもりです (2)選択した範囲のセルに右から○○番目に半角スペースを挿入。 例:○○を1とした場合 1234 5678 9101 1235 5679 9102 1236 5680 9103 ↓ 123■4 567■8 910■1 123■5 567■9 910■2 123■6 568■0 910■3 (3)選択セルの1番右の文字を上付き文字。 例: 1234 1235 1236 ↓ 1234←4を上付き 1235←5を上付き 1236←6を上付き 「選択した範囲のセル中にスペースやタブがあれば全部削除」 といった似たようなマクロを発見したのですが。これを利用してできないでしょうか? Sub 空白除去() Dim rng As Range Dim str as String For Each rng In Selection ' --- タブを除去 str = Replace(rng.Value, vbTab, "") ' --- 半角スペースを除去 str = Replace(str , " ", "") ' --- 全角スペースを除去 rng.Value = Replace(str , " ", "") Next End Sub お力添えよろしくお願いします。

  • sdgyp
  • お礼率83% (10/12)

みんなの回答

noname#79209
noname#79209
回答No.2

以下の正規表現DLL「REGEXP.DLL」を組み込めば、 http://www.hi-ho.ne.jp/babaq/bregexp.html (1) ret = Replace("s/^(?)/$1\s/", szTarget) (2) ret = Replace("s/(?)$/\s$1/", szTarget)

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

>次のマクロが欲しいです 例を探そうとしたようだが、丸投げ的。望ましく無い。 例のようなのでなく、下記をヒントとして例示。 他にも色々処理方法はありえる。 セルの文字列に、位置(何文字目)を指定して、文字を挿入というVBAの関数は無いはず。関数を作れば出来るが。 例データ A列 1234 5678 9101 1235 5679 9102 1236 5680 9103 結果 B列 1 234 5 678 9 101 1 235 5 679 9 102 1 236 5 680 9 103 コードは標準モジュールに Sub test01() For i = 1 To 3 s = Split(Cells(i, "A"), " ") t = "" For j = 0 To UBound(s) t = t & Mid(s(j), 1, 1) & " " & Mid(s(j), 2, Len(s(j)) - 1) t = t & " " Next j Cells(i, "B") = RTrim(t) Next i End Sub (2)は各ブロックの文字長-1の位置にスペースを入れればよい (Len(文字列)-1の文字列) & " " & (Len(文字列)番目の1バイト。 そのブロック数だけの繰り返し。 (3)はマクロの弥勒でコードがわかる。右端はMid関数の Len(文字数)番目で捉えられる。

関連するQ&A

  • エクセルで選択範囲内の半角空白を取り除きたい。

    エクセルで選択範囲内の半角空白を取り除きたい。 エクセルの各セルに歌のタイトルが入っています。 ところがところどころに半角スペースが入ってしまっているためこれを取り除きたいのですが すべてを取り除くのであれば選択範囲内であっても「検索置換」を使えばできますが 条件として日本語に混在するスペースのみをとり除き、 英文の単語間にあるものはそのままにしたいのです。 基本的に、全角にはさまれた半角空白のみを対象として、 半角にはさまれた空白はいじらないことになります。 (いじらない場合として半角数字も該当してしまいますが、ほとんど該当がないものと考えています) 関数、マクロ等でなにかいい知恵がありましたら教えてください。

  • マクロ セル範囲の選択の仕方について

    いつも回答して頂きありがとうございます。 ネット等で検索し、有効なマクロ記述を使用してセル範囲の選択を行いましたが、 自分が思っている通りに動きませんでした。 『質問内容』 C7を起点とした最終の列 (C7:D7) ← 自分の狙いの選択範囲(Dより大きい文字がきて欲しかった) 実際は、(A7:C7)が選択された。 どこらへんの記述が間違っているのでしょうか? 御指導の程よろしくお願い致します。 ちなみに下記が自分が作成中のマクロです。 Sub シートを繰り返し選択する() Dim d As Integer Dim retu As Integer d = 3 retu = Range("IV7").End(xlToLeft).Column Worksheets(Worksheets("一覧").Cells(d, 2).Value).Activate ActiveSheet.Range(Cells(7, 3), Cells(7, retu)).Select End Sub

  • 選択範囲内の空白セルだけ抜き出すマクロでエラー(OfficeXP)

    OfficeXPのExcelを使用しています。 選択した範囲に空白のセルがあったらそこにスペースを入力するというマクロで、下記の一行だけ書きました。 Sub Test() Selection.SpecialCells(xlCellTypeBlanks).Value = " " End Sub 空白のセルが有った場合は問題ないのですが、無いときにエラーになります。 どのようなエラー処理をすればこれを回避出来るのでしょうか?教えて下さい。

  • エクセルマクロ 選択したセル範囲の中で空""のセルに'を入れる

    エクセルは長年使っていたのですが、 マクロも使いたいと思いネットで色々調べています。 やりたいことは、 選択したセル範囲の中で空""のセルに'を入れる マクロを作りたいのですが、 どうしたら良いのでしょうか? マクロ以外の方法もあれば教えて欲しいのですが、 この機会にマクロに挑戦しようと思いました。 宜しくお願いいたします。 今作成している途中のマクロはこんな感じですが 上手く動きません Sub NullCellAddDash () Dim cellrange As Range For Each cellrange In Selection.Cells If cellrange = "" Then cellrange = "'" End If Next End Sub

  • ワードで選択範囲の半角数字を全角にするマクロ

    ワード2007です。選択範囲の半角数字を全角にするマクロ、あるいは選択範囲の全角数字を半角にするマクロを教えてください。エクセルだったら作れたのですが、ワードではうまくいきません。全文に関して変換するのではなく、選択部分だけ変換を一発でして、止まってほしいのです。

  • エクセルですべての列に半角スペースを挿入したい場合

    エクセルですべての列の文字の先頭に半角スペース(空白)を挿入したい場合どうしたらよいのでしょうか? 例 あいうえお かきくけこ さしすせそ ↓ ■あいうえお ■かきくけこ ■さしすせそ ■は半角スペース(空白)です みたいな感じです ちなみに表示1文字ずらす方法 [セルの書式設定]→[配置]タブ→文字の配置の「インデント」 ではありませんのでよろしくお願い致しますm(__)m

  • マクロでのセルの選択範囲について

    マクロのセル範囲の指定でうまくできなくて困っています。 マクロでB3:B5を選択するように、コードを次のように Range(Cells(3.2), Cells(5, 2)).Select 書くと、B1:C5を選択します。 試しに、 Cells(3, 2).Select と書くと、B3を選択します。 次に、マクロを Cells(5, 2).Select と書くと、B5を選択します。 どうしてでしょうか。 宜しくお願い致します。

  • エクセル半角スペースがあるセルも重複にする

    エクセルについての質問です 以下の様なデータが3000くらいまであります。 A1 パソコン 比較 A2 パソコン比較 A3 PC 比較 A4 DELL 比較 A5 IBM 比較 A6 IBM比較 半角スペースと半角スペースがないものも同じものとしてとらえて、スペースがない方を削除したいのですが、上記の例ですとA2とA6になります。 SUBSTITUTE関数で半角スペースを削除して、その後フィルタで「重複するセルを無視する」とやるとできるのですが、このやり方だとA3,A4のような半角スペースが必要なセルまで半角スペースがなくなってしまいます。 これができる関数などはありますでしょうか? 関数を使わなくても、一括で処理できる方法があれば教えてください。 よろしくおねがいします。

  • エクセルマクロ:範囲の選択

    マクロで範囲を指定したいのですが、 dataと名づけたシートA1に例えば8という値、A2に20という値があります。 この数字は他のセルから参照する計算式になっていて再計算をするたびに変わります。 この時、C8:E20の範囲を指定したいのですが、やみくもに Dim c As Integer c = 3 'C列 Range(Cells(Sheets("data").Range("A1").Value, c), Cells(Sheets("data").Range("A2").Value, c + 2)).Select Selection.Copy などと書いてみたのですが、うまくいきません。 どのように記述すればよいか、教えてください、宜しくお願いいたします。

  • 【エクセル】セル内の右側のみ半角スペース削除

    セル内にある半角スペースのうち、右側にあって、文字に囲まれていないものを一括削除する方法をさがしています。 例)※␣と?は半角スペース。?のみを削除する。       列A 行1 test01??? 行2 test02␣01???? 行3 ␣test03␣114? 宜しくお願いします。

専門家に質問してみよう