• ベストアンサー

Excel・VBAでセルの一部分のデータだけを削除

VBAでセルの一部分だけの削除を行いたいのですが、どのようにすればいいのでしょうか? 例えば A1の値が NTT Docomo だった場合「NTT」を消して Docomo とする、というようにしたいのです。

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

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

頭の3文字だけを削除するならば、 Range("a1").Value = Right(Range("a1").Value, Len(Range("a1").Value) - 3) としてあげればいいでしょう。 ほか、条件があるならば、それに従って 作成するだけですけど。

KODAMAR
質問者

お礼

回答ありがとうございます。 前の部分を消す、という考え方じゃなくて、 前の部分以外を残す、という考え方でやればいいんですね!! ありがとうございました。

関連するQ&A

  • Excel2000VBAでのセル参照について

    Excel2000のVBA自動記録である構文をつくりました。 その中で、セルやレンジを特定しているのですが (A1)や(A1:B10)とか.. その後シートの行や列を追加あるいは削除した時に、この部分を自動的に対象のセルやレンジに書き換わる方法というのはあるのでしょうか? (関数式なんかは、自動で参照するよう書き換わるのですが、そのようなイメージです) 初心者です。何卒よろしくお願いします。

  • VBA セルの削除

    開いているブック全てに対して、セルを削除するマクロを組んだのですが、うまく動作しません。 1. ブックのsheet1にてセルB2~B100の中で、値があるセルを特定 値の入ったセルがあれば、その値と同じ名前のシートが存在する 例) B2:値 1-A、シート名: 1-A B3:値 2-A、シート名: 2-A ... 2. 特定した値と同じ名前のシートをアクティブにする 3. そのシートにて「セルA1がブランクでない かつ セルB1の値がゼロ」と条件をかける 4. trueであれば、sheet1にて特定したセルへ戻る 5. 特定したセルとその右隣のセルを削除(上シフト) 6. 1.~5.を、sheet1のセルB2以降、値がブランクになるまで繰り返す 次の通り構文を作成、エラーなく実行できるのですが、結果は5.までしか処理されず、他のブックに対しても処理が走っていません。 格納した変数に問題がありそうなのですが、解決できず困っています。 Sub test() Dim WBK As Workbook For Each WBK In Workbooks If WBK.Name <> ThisWorkbook.Name Then WBK.Activate For i = 2 To 100 touroku = WBK.Worksheets("sheet1").Cells(i, 2).Value If WBK.Worksheets("sheet1").Cells(i, 2).Value <> "" Then WBK.Worksheets(touroku).Activate If ActiveSheet.Cells(1, 1) <> "" And ActiveSheet.Cells(2, 1).Value = 0 Then WBK.Worksheets("sheet1").Cells(i, 2).Resize(1, 2).Delete End If End If Next i WBK.Save End If Next WBK End Sub まだVBA初めて1ヶ月ほどで、基礎が理解できてきた程度なのですが、急ぎ完成させたいマクロなのでお力を貸してください。 よろしくお願いいたします。

  • 【VBA】条件を満たしたセルを塗り潰し

    VBAで下記のようにしたいのですが、どのようにすれば良いでしょうか?      A 1    100 2    110 3    120 4    130 5    140 6    150 7    160 8    170 9    180 【条件】この場合、A1:A9の範囲内でB1の値を超える値が入力されているセルを黄色で塗りつぶす ※前提として、B1に150と入力されているとします 上記のようなVBAを作成したいと思っています。 この場合、塗りつぶしの対象となるセルはA7,A8,A9となります。 条件付き書式で対応できるのですが、Excel2007で作成したファイルをExcel2003で開くと条件付き書式が反映しませんでしたので、VBAで対応しようと思いました。 宜しくお願いします。

  • 一括でセル削除 VBA エクセル

    B1からZ100にランダムに値(文字や数字)が入ってます。このうち、空白セルを削除して左に寄せたいのですが、VBAで一括でできますでしょうか?

  • excel2003の vbaの名前定義について

    excel2003の vbaで、名前定義した範囲から、任意のセルの値を抜き出したいです。 例えば、Aという名前定義した範囲があるとします。 AはA1セル~A10セルの範囲です。 そして、たとえいばA3セルの値を取得したい場合。 名前定義した範囲を使ってどのように表現すればよいでしょうか?

  • vbaでシートより100より大きい値を削除するコードを教えてください

    vba初心者です。 値の羅列のシートでセルの値が100より大きいセルはのある行は削除したい時どのようなコードを書けばわからず苦慮してます。 例として下記のようなシートの場合どうかきますでしょうか? A B C D E F ---------------------------------------- 1 20090101 20 30 95 40 ---------------------------------------- 2 20090102 25 35 105 45 ---------------------------------------- 3 20090103 40 50 110 50

  • 指定した背景色のセルの値を削除するVBAを作りたい

    ご覧いただきありがとうございます。 VBA初心者です。 VBAを用いて指定し背景色のセルの値を全て削除したいと考えています。 シートには別の背景色のセルもあるため色のあるセルの値をすべて削除などは使えません。 For Eachを用いて以下のような数式を用いようと思ったのですが、Ineriorはセルを対象としていないといけないようで、シート全体を対象としたい場合どうしたらよいか分かりません。 また終わりのところもよくわかっていません。 ご教授よろしくお願い致します。 Dim ws As warksheet For Each ws In ActiveSheet If ws.Interior.ColorIndex = RGB(252, 228, 214) Then ws.ClearContents Next End Sub

  • コピペして元のセルに戻るVBAについて

    VBAのことで質問させていただきます。 エクセルのバージョンは2010です。 3行目から100行目までの間にカーソルがあった場合、その行のA列に異動し、 その値をコピーし、A2のセルに貼りつけ、コピーしたセルに戻る、というVBAを 作れたらと思っているですが、可能でしょうか? VBAは本を読んでかじったりはしているのですが、自分では組めないんです。 狩野であれば、どなたかよろしくお願いいたします。

  • VBAで色の付いているセルの行削除

    VBAで色の付いているセルの行を削除することは出来ないでしょうか? 量が多すぎて一つ一つ削除すのは大変で間違えて削除してしまいそうなので・・・ - 文字または数字 ■ 色の付いたセル(赤)  A B C D E F・・・ 1- - - - - - 2- - - - - - 3- - - ■ - - 4- - ■ - - - 5- - ■ - - - 6- - - - - - 7- - - ■ - - 8- - ■ - - - 9- - ■ - - - 10- - - - - -       ↓  A B C D E F・・・ 1- - - - - - 2- - - - - - 6- - - - - - 10- - - - - - よろしくお願いします。

  • EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

    Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

専門家に質問してみよう