• ベストアンサー

置換のことで

エクセルの置換のVBAのことですが。 あるシートに沢山の文字列が入力されています。 abcという文字列が含まれるセルの最後の部分は、必ず以下のようになります。 カンマ 半角スペース 数字 カンマ 半角スペース 数字  閉じカッコ  ,             13    ,            56       ) 数字はばらばらで、1桁か2桁のどちらかで0はないです。 このような状況で、閉じカッコの左側の数字を全て 1 に置換するVBAが知りたいのですが。

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

  • ベストアンサー
  • eipu
  • ベストアンサー率39% (25/64)
回答No.5

こんな感じでどうでしょう? ただ、65536行目は置換されませんが・・・。 Sub abc_replace() Dim x As Integer Dim y As Long Dim yy As Long Application.ScreenUpdating = False For x = 1 To 256 y = 65536 yy = 70000 With Columns(x) Do Until y >= yy yy = y On Error GoTo err: y = .Find(What:="abc", After:=Cells(y, x), LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrebious, _ MatchCase:=False).Row On Error GoTo 0 If y < yy Then Cells(y, x).Value = Left(Cells(y, x).Value, InStrRev(Cells(y, x).Value, " ")) & "1)" End If Loop End With Next Application.ScreenUpdating = False Exit Sub err: y = yy Resume Next End Sub

yusari
質問者

お礼

ありがとうございます。

その他の回答 (4)

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

文字列をsとして s=cells(i,"A") t=1 P1=instr(t,s,",") v=mid(s,1,p1) & ", 1, 1)" cells(i,"B")=V でしょうか。iは行番号。

yusari
質問者

お礼

ありがとうございます。

  • ebis
  • ベストアンサー率27% (17/61)
回答No.3

No.1の者です。 No.2の方のInStrを知りませんでした。 すみませんが私のコードを訂正させて下さい。 aが対象文字列として a = Left(a, InStr(Len(a) - 3, a, " ")) & "1)" ちなみに置き換える文字列とは xxx abc xxx, 13, 56) といったイメージで、いいのでしょうか。

yusari
質問者

お礼

ありがとうございます。

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

st = Left(st, InStr(3, st, " ")) & "1)" です。

yusari
質問者

お礼

ありがとうございます。

  • ebis
  • ベストアンサー率27% (17/61)
回答No.1

a = 対象セル If Mid(a, Len(a) - 2, 1) = " " Then a = Left(a, Len(a) - 2) & "1)" Else a = Left(a, Len(a) - 3) & "1)" End If 対象セル = a 1桁か2桁を半角スペース位置を見るだけの判断ですが どうでしょうか。

yusari
質問者

お礼

ありがとうございます。

関連するQ&A

  • エクセルのマクロで文字の置換について

    エクセルのマクロを使った文字の置換についてお聞きしたことがありましす。 やりたいイメージは例として添付の画像としてアップしましたが、 ・エクセルシートに英数文字列の表がある(例では2行2列ですが、実際は6行48列ぐらいです) ・その表を各英数文字列の間に半角カンマ","を入れて、メモ帳に貼り付けたい   ※実際メモ帳に貼り付ける動作は手動で行うので、クリップボード上で「各英数文字列    の間に半角カンマ","が入っている状態」で構いません。 ・各英数文字列の最初の2文字は必ず"0a"、その後の英数字は3桁または4桁です。 ちなみに、エクセルシートで英数文字列の表をそのままコピーしてメモ帳でペーストすると 各英数文字列の間にスペース(空白)が入ってしまいます。 その後、メモ帳で置換などを使い半角カンマ","を入れてもいいのですが、そこまでをマクロで行いたいと思っております。 上記のことがそもそもエクセルのマクロで出来るかどか分かりませんが、なにか有用な方法がございましたらご教授お願い致します。  ※使用OS:Windows7、エクセルバージョン:2007

  • Excelマクロで置換

    Excelマクロで置換 セルA1に6桁・スペース・24桁の数字が入っています。 最初の6桁に130,397,430,440が含まれているシートを選択 そのシートの中に "ああああ"があったら"ああああい"に "いいいい"があったら"いいいいう"に "うううう"があったら"ううううえ"に と置換をするマクロを書きたいと思っています。 置換する対象の文字列は多いので別マクロで作成し呼び出したいと考えています。 シートは1ブックに30シート程。何シートあるかはブックによって変わります。 現在マクロの記録を使って試行錯誤しているのですが なにぶん初心者なのでなかなかうまくいきません。 どなたかご教授頂ければと思います。

  • 文字の置換のVBA

    こんばんは。 下記の文字列の置換をマクロ(VBA)で出来ますでしょうか。 今は関数(SUBSTITUTE)を繰り返して処理しているのですが、1度で出来る方法がありましたら教えて下さい。 100 ABC-23d=3,4 → 100ABC23D3.4 (1)スペース削除 (2)小文字を大文字へ (3)"-" "=" など数字とアルファベット以外を削除 (4)","→ "." (カンマをドットへ変換) 宜しくお願いします。

  • Excel VBAでの置換の方法について

    Excelの各シートのA5:A104の列に文字列で「●着/●頭」というデータが入力されています。●は半角の1~2桁の数字になります。 例えば、 A5「5着/10頭」 A6「3着/12頭」 A7「6着/7頭」 といった文字列です。これを置換を使って「着」と「頭」を消して A5「5/10」 A6「3/12」 A7「6/7」 と表示されるようにしたいのですが、VBAで良いコードがありますでしょうか。シートは16ページあり、シート名は数字の1~16です。

  • excelで置換が上手くいきません

    excel for office365を使用しています。 各セルに文章が書かれていて、句読点が全角で「,」「.」になっているのを「、」「。」に置換しようとしたところ、「1. 」「2. 」のような「数字+半角カンマ+半角スペース」で書かれている部分が「1。」「2。」といった感じに置換されてしまいます。 関数を使用せずに置換だけでこれを回避する方法をご教示ください。 自分で試した方法としては、一旦「.」を全て「。」に置換した後、ワイルドカードを使って「[0-9]。」を「[0-9]. 」に置換しようとしましたが該当無しとなり、「?。」を「?. 」で変換したら数字部分が全て「?. 」になってしまいました。 ワイルドカード部分を据え置きでそれ以外だけ置換するというのは仕様上できないのでしょうか?

  • ワードのワイルドカードを使った置換について

    ワードでワイルドカードを使って置換をしたいのですが、うまくいきません。 数字の前の全角スペースを半角スペースに変えたいのです。 置換でワイルドカードを使用するにチェックを入れ、 検索する文字列は「全角スペース[0-9]」 置換後の文字列は「半角スペース\1」 として実行してみたのですが、 〔置換後の文字列〕に指定できない範囲の番号が含まれています というメッセージが出ます。 全角スペース[0-9]はきちんと認識しているようで、検索まではうまくいっているようですが、 置換後の指定の仕方が悪いようなのです。 お教えいただければと思います。 よろしくお願いいたします。

  • マクロ(複数文字置換)についての質問です。

    現在、ExcelのA列に置換前の文字、B列に置換後の文字が入っているシート(シート名:"辞書")があります。 そのシートを辞書的役割で使用し別のシートの内容を置換したいと考えています(現在候補が1000文字程度あり、1つずつ置換をすることが難しいです) また、完全一致のみの置換、大文字とから小文字の置換も可能にし、件数も何件存在するかわかりません。 例:ABCをabcに変換したい場合、 ○ABC→abc ×ABCDEF→abcDEF のような感じです。 しかし、1つのセルの中に空白がある場合は置換可能とします。 例:ABC DEF→abc DEF このようなことは可能でしょうか? 何卒よろしくお願いいたします。

  • Excel VBA で フォルダ名の一部を一括変更(セルの値を取得して変更)

    こんにちは。例を挙げます。よろしくお願いします。 まず、"ABC" という名前のフォルダがあるとします。 この"ABC"の中に、"00_あいうえお"というフォルダがあるとします。 ほかにも同じようなフォルダ:"10_かきくけこさ123"、"01_しす45せそたち"、"67_つてと"があります。これらのフォルダ名には特徴があり、2桁の半角数字に始まり、半角アンダーバー、文字列という並びになっています。 さらに同じフォルダ"ABC"に、EXCELファイル"なにぬ89.xls"もあるとしましょう。 したがって今、フォルダ"ABC"には、4つのフォルダと1つのEXCELファイルがあります。 "なにぬ89.xls"の、セルA1には"1"、A6には"2"、A11,A16は"34","57"と数値が入っているとします。また、セルB3には"あいう"、B8には"かき"、B13には"しす4"、B18には"つてと"という文字列が入っています。 B3,B8,B13,B18の文字列は、必ず同じフォルダ"ABC"内のフォルダ名に含まれています。 マクロで行いたい内容:フォルダ名の左端の2桁の数字を置換する その詳細: "なにぬ89.xls"のセルB3の文字列"あいう"を含むフォルダ"00_あいうえお"のフォルダ名の2桁の数字"00"のうち、右の"0"だけ、セルA1の数値"1"に置換したいのです。("00_あいうえお"→"01_あいうえお"へフォルダ名置換) 同じように、セルB8の"かき"を含むフォルダ"10_かきくけこさ123"の名前も、セルA5の数値"2"をもとに置換したいのですが、今度は2桁の数字が"02"になってほしいのです。("10_かきくけこさ123"→"02_かきくけこさ123"へフォルダ名置換) 以上のことをふまえますと、 フォルダ名"01_しす45せそたち" は "34_しす45せそたち" "67_つてと" は "57_つてと" に変換したいということがお分かりいただけますでしょうか。 4つの例しかあげませんでしたが、実際の"なにぬ89.xls"にはもっとたくさんのデータが、5行おきに並んでいます。他のセルには無関係の文字列や空白などが入っています。 セルの値でフォルダ名を部分一致検索し、セルの値でそのフォルダ名を置換する、ということができるでしょうか? 説明が長くなりましたが、ご回答、お待ちしております。よろしくお願いいたします。

  • カンマで区切られた二つの数値を分けてセルにコピー

    XPのOffice2003のエクセルです。ある二つの数値が文字列として一つのセルに例えば「375, 934」という風に、半角カンマと空白で区切られて入っています。これを二つのセルに数字「375」「934」と分けてコピーしたいのです。 ワークシートのセルで数式処理、あるいはVBAマクロのどちらかで、できる方法を教えていただけないでしょうか。

  • エクセルシートを半角・スペースなしに

    エクセルのシートに文字列・数字が入力されています。しかし文字や数字の間に空白があったり、全角・半角がバラバラに入力さています。 これを全て、半角でスペースをなくすにはVBAにどのように書けばよいのでしょうか?

専門家に質問してみよう