• ベストアンサー

エクセルVBA

初心者でレベルが低いですがよろしくお願いします。 VBAでエクセルのセル内の文字列を読み込んでその中の文字を検索し、ヒットしたときにそのヒットした文字だけを変換して取得することが可能でしょうか?? 列 A1に hanamiti/1234 という文字列が入っていて この文字列の中の / を検索し、あった時に _ に変更する。 結果 hanamiti_1234 として取得した。 ということができるのでしょうか? ご教授お願いいたします・。

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

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.1

その機能としてはReplace関数があります。 Replace("hanamiti/1234","/","_") とすると、hanamiti_1234 が返ります。 ※照合に条件を付けられるようなので、詳しくはVBEのヘルプをご覧ください。 なお、VBAを使わなくても、ワークシート関数として SUBSTITUTE という同じ働きの関数があります。

その他の回答 (3)

回答No.4

これで、動作します。 Sub test() Dim Henkan As String ' Worksheets("Sheet1").Select     '■Replace関数です。 Henkan = Replace(Cells(1, 1), "/", "_") ' MsgBox Henkan End Sub 動作確認しました。

hanamiti
質問者

お礼

みなさんありがとうございます。 やってみました!!動きました!! 代表させてもらってこちらにしか書きませんが皆さんありがとうございます。

回答No.3

Replace関数はVB6からなのでもしバージョンの古いとありません。自分で作れば済みますが。 ベタベタに書いてみました。 Public Function Test() Dim s1 As String s1 = Sheet1.Cells(1, 1) 'セルA1の値を取得 s1 = Change_String(s1) '取得した文字列を変換 End Function Private Function Change_String(s1 As String) As String Dim lngLp As Long Dim Ret As String For lngLp = 1 To Len(s1) If Mid(s1, lngLp, 1) = "/" Then Ret = Ret & "_" Else Ret = Ret & Mid(s1, lngLp, 1) End If Next Change_String = Ret End Function

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

文字列そのものを置き換えるのではなく、変換後の文字列を取得できればいいのですか? それでしたら、文字列がSheet1にある場合、取得後の文字列をSheet2に転記させるマクロです。 Sub test() For Each c In Sheets("Sheet1").UsedRange If Len(Replace(c, "/", "")) < Len(c) Then x = Replace(c, "/", "_") n = n + 1 Sheets("Sheet2").Cells(n, 1) = x End If Next End Sub

関連するQ&A

  • エクセルのVBAについて質問です。

    エクセル2003のVBAについて質問です。 複数の検索したい文字列があり、複数の検索対象セルがあります。 セルの文字列が検索文字列のいずれかと一致したセルの背景の色を変えたいです。 よろしくおねがいします。 仕事でマクロを組まなけばならなくなってしまったのですが、 初心者のため検索してみたり調べてみたり、参考にして作ってみたのですがうまくいかないばかりかどんどん解らなくなってしまいました。 どうか助けてください。 sheet1のセルが検索対象 (全セル対象でも大丈夫ですが、検索したいセルはB2→J2、B11→J11、B20→J20の範囲です)、 sheet2のA列に検索したい文字列が入力されています。 この検索したい文字列は今後増えていく可能性があるので、増えた場合にも対応できるようにと考えています。 sheet1(検索対象) あ い う え あ お お sheet2(検索文字列) あ う お け き ↑の様に入力されており、sheet1の「あ」と「う」と「お」のセルの背景を変えたいです。 色を変えたいのはsheet1です。 findメソッドや繰り返し処理などを調べて実践してみたのですが、 いきなりマクロを組めといわれた超初心者には難しく質問しています。 自分でやってみたのですが、 sheet1の最初の「あ」のみが変換され、後に出てくる「あ」が変換されません… どうしたらいいのか…どうすることも出来ず困っております。 すみませんが、どなたか優しい方助けてください。 よろしくおねがいします><

  • ExcelのVBAで・・・

    VBA初心者です。。 Excelのある列のセルの値が全角文字の場合に、 隣の列に全角カタカナに変換した値を転送するVBAがあります。 変換元の列の中に空白セルがあった時は変換先のセルに 文字があっても空白に置き換えたいのですが、方法がわかりません・・・。 使用しているVBAの内容は下の通りですが、どういう風に 修正すれば実現できるかアドバイスを頂けないでしょうか? よろしくお願い致します!   Dim C As Range   For Each C In Range("E3", Range("E65536").End(xlUp))     If C.Value <> "" Then _     C.Offset(, 1).Value = Application.GetPhonetic(C.Value)   Next

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • エクセルVBAで文字列変換

    エクセル2010でVBAを書いています。 シートの中のセルを全ての書式を文字列に変換するのはどうすればよいでしょうか。 ボタンをクリックした時にシート内のセルが全て文字列型に変換するという動きにしたいです。 解決法などありますでしょうか。 よろしくお願いします。

  • エクセルVBAでの質問です。

    エクセルVBAでの質問です。 エクセルのデーター一覧検索でヒットしたセルの色を選択している時だけ変更させるには?(出来れば点滅にしたい) よろしくお願します。

  • エクセル(VBA) 検索条件に文字色を含める

    エクセルについて質問です。 エクセルのバージョンは2007を使用しています。 基本的にはCOUNTIFS関数やSUMPRODUCT関数の考え方で複数条件を満たすセルの個数を数えたいのですが その検索条件のうちのいくつか(正確には3つの列)において、特定文字が何色かを見たいのです。 具体的には下の添付ファイルの備考A~備考Cの列のように、その3つの列のセルの中にそれぞれ黒文字(自動)、黒文字(自動)太字、赤文字、青文字が混在しており、その文字列の羅列の規則性としては 1.セル内の文字列は必ず、上で挙げた4種のフォントスタイルのうちのいずれかの # で始まる。 2.#A #B #C (#D) のように、セル内の文字列は一連の小文字列が半角スペースで区切られているとともにその一連の小文字列の最初の文字は必ず # もしくは (# であり、またその一連の小文字列は同一色同一の太さである。 3.(#A) のような、() で囲んだ一連の小文字列は黒文字(自動)スタイルだけであり、また1.でも述べたようにセル中の文字列の最初に来ることはない。 となっております。 そこでそれぞれの列について、黒文字(自動)もしくは黒文字(自動)太字もしくは青文字の # で始まるセルを検索し(つまり赤文字の # で始まるセルと何も記述のない空白のセルを除く)、 その3列を and もしくは or 条件で組み合わせ、更に1、2個条件を加えて該当する行の数をCOUNTIFS関数やSUMPRODUCT関数のように数え、返したいと思っております。 恐らくVBAを利用することとなると思います。まだまだVBAを自分で一から構築することは難しいのですが、ある程度VBAを読み解き理解していくことは可能なレベルですので、どうか大まかな構文の枠組みだけでもご教授いただけると幸いです。 よろしくお願いいたします。

  • エクセルのVBAについて

    エクセルの列を上から一つづつ読み込み、Fという文字を発見したら、その下のセルを切り取って、他の列のヒトマス上のセルに貼り付ける。という作業をするプログラムを書き実行したいのですが、どのようにしたらいいでしょうか? できるだけ具体的に書いていただけるとありがたいです。このサイトを閲覧している方にくらべたらほぼ初心者ですので、VBAを起動する場面からかいていただけると幸いです。 よろしくおねがいします。

  • エクセルマクロのVBAでINDEX関数を使う。

    エクセルマクロのVBAでINDEX関数を使って値を取得しています。 値を取得したセル番地を取得したいと考えています。 ネットで調べましたが、なかなか思うような内容をヒットできません。 VBAに詳しいかた、ご教授お願い致します。

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

    エクセルVBAの文字列操作について 例えば、[1-10,12,15-20,22-38]と入っているセルがあるとします。 各数字は","で区切られています。このセルに数を足したり引いたりしたいのです。 例えば、このセルから”5”を引いて[1-4,6-10,12,15-20,22-38]と表示したり、 "21"を足して[1-10,12,15-38]と表示したいのですが どなたかご教授いただけないでしょうか?

  • エクセル VBA

    エクセルVBAで以下のようなデータがあります。 D列の文字列と右隣のE列の文字列の2つが入っているものをA列から探し、見つかったセルの上にセルを追加し、E列の右隣のF列に入っている文字列を代入したいです。 どのようなプログラムになりますか?

専門家に質問してみよう