Excelの関数・マクロでテキスト内の句読点をランダムに指定文字で置き換える方法

このQ&Aのポイント
  • Excelの関数やマクロを使用して、テキスト内の句読点をランダムな指定文字で置き換えることは可能です。
  • 例えば、SUBSTITUTE関数とランダム関数を組み合わせることで、句読点をランダムに代替文字で置き換えることができます。
  • 更に、任意の種類の代替文字を使用する場合は、カスタム関数を作成することもできます。
回答を見る
  • ベストアンサー

テキスト内の句読点をExcelで置き換え

Excelの関数、又はマクロで下記のことは可能でしょうか。 『テキスト中の句読点をランダムに指定文字で置き換える』 素人なりにIFとSUBSTITUTEを組み合わせてやってみたのですが、 思うような置換えになりませんでした。 Excelの関数・マクロにお強い方 どうか助けていただけませんか、お願いします。 わたしのやりたい事を例にしますと。 <元のテキスト> 今日は朝から良い天気でしたので、遠くまで散歩に出かけました。 ところが、30分ほど歩いたとこで、急なにわか雨。 雨宿りする場所なかったので、走って家に戻る事になりました。 ↓ <置換後のテキスト> 今日は朝から良い天気でしたのでA3遠くまで散歩に出かけましたB1 ところがA130分ほど歩いたとこでA2急なにわか雨B3 雨宿りする場所なかったのでA2走って家に戻る事になりましたB3 この様に、句点と読点をランダムに置き換えたいのです。 補足としまして、 句点はB* 読点はA* のように句読点の最初の文字は共通 句読点の置換え文字は、任意で数(種類)が変えられるようにしたいと思います。 テキストによって、A1~A3を使うこともあれば、A1~A6までの場合ある という説明でおわかりになれますでしょうか? また、ここでは句読点としましたが、 "・"はC*に置換えるなど、後から付け足すことができると凄く嬉しいです。 素人が勝手に「できたらいいなー」って思っているだけですので、 できる範囲だけでも結構ですし、できないことなのかも知れません。 ヘタな説明でゴメンなさい(≧◇≦) こちらの意図が上手に伝わっているか心配ですが、 おわかりの方、お手数かけますが宜しくお願いいたします。

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

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

シート2のA列に検索対象文字 B列に置換文字 C列に最大番号 を用意。 sub macro1()  dim r as long  dim target as range  with worksheets("Sheet2")  for r = 2 to .range("A65536").end(xlup).row   set target = cells.find(what:=.cells(r, "A").value, lookin:=xlformulas, lookat:=xlpart)   do until target is nothing    target = application.substitute(target.value, .cells(r, "A").value, .cells(r, "B").value & int(1 + rnd * .cells(r, "C").value), 1)    set target = cells.findnext(target)   loop  next r  end with end sub 元のテキストを記入したシートで実行。

rin_tachibana
質問者

補足

keithinさま、ありがとうございました♪ マクロを実行した瞬間、感動で涙がでそうになりました(>▽<) わたしが求めていたものをこんなに短時間でつくれてしまうなんて… 凄い方だなーって思いました。 本当にありがとうございました。 よろしければ、もう少しわがままにお付き合いいただけますか。 教えていただいたマクロで十分満足しているのですが、 逆に欲がでてしまいまして(〃 ̄ω ̄〃ゞ わたしは、この置き換えられたテキストを元に、 後から、TeraPadなどで[置換]しようと思っていたのですが、 A1:、、、 B1:。。。の様に、 予め置換用のシートを用意しておけば、 マクロだけで完結することもできるんでしょうか。 ご無理言って申しわけありませんが、 もし、お時間があれば、お願いできませんか。 ですが、 当初の質問には満点のご回答いただいておりますので、 お忙しければ、ご対応いただかなくても結構です。

その他の回答 (1)

  • USB99
  • ベストアンサー率53% (2222/4131)
回答No.1

ランダムという言葉の定義をしっかりする必要があります。 例えばB1~B10までなのか、それともB-1000000~B100000000までなのか、 同じ数字があってもいいのか、など。

rin_tachibana
質問者

補足

ご指摘ありがとうございます。 おっしゃる通りですね(・・。)ゞ 説明不足でした。 教える側の立場を理解できませんでしたので、 自分の思いだけで書いていました。

関連するQ&A

  • 句読点の付け方を教えてください。

    句読点についてお伺いします。実際には読点についてお伺いします。 句読点での決まりはないと言うことは理解しておりますが、会社での文書基準を作成したいと考えておりますので、いろいろ教えていただきたいと思います。まず JISの基準で「A、B、及びC」、「A、B、又はC」と「、」についての基準が決まっていると、ネットでしりました。つまりAの後もBの後も「、」がいると言うことはわかりました。Bの後もあった法が分かりやすいですものね、 そこで確認したいのは、下記の場合の読点はどうかと言うことです。 必要なのか不要なのか。何か基準があるのか教えていただけますでしょうか、 (1)「りんご、みかん、及びバナナ並びにキャベツ及びニンジン」この場合、及び以降はどこに「、」をつけるべきでしょうか。また付ける必要はないのでしょうか。 (2)若しくはを使用する場合です。「りんご、みかん若しくはバナナ又はキャベツ若しくはニンジン」の場合などどこに「、」をつけてよいのやら悩むときがあります。 若しくはの後に「、」がいるのか等。 できだけ参考になる基準等があればおしえていただけますでしょうか。 よろしくお願いします。

  • ”~を、~”って禁止でしたか?

    句読点に関する質問です。 確かな記憶じゃないんですが、”を”の次に読点を付けるのは禁止されてると聞いた記憶があるんですが正しいですか? ”~を。”は普通に使われてるんでいいんですよね。 もし読点がだめなら、なんで句点はよくて読点はだめなんでしょう。 あと、他に句読点を付けてはいけない文字とかあるでしょうか。 他にも知っておいたほうがいい文章のルールとかあれば、教えてもらえると嬉しいです。(儀礼的な文章のルールはいらないです。あくまで普通の文章に関するもので)

  • Excelマクロ テキスト貼り付け

    テキストファイル(*.txt)を開き、A1に貼り付けるマクロを教えてください。 B列には計算式があるため、A列にテキストの内容を貼り付けたいです。 また、テキストのファイル名はランダムなため、 フォルダを開いて、テキストを開きたいのですが教えてください。

  • テキスト操作で各行の4文字だけを取り除きたいのですが

    お世話になります。 760行程度のテキストファイルから 各行の最初の4文字だけを抜き取りたいのですが vb.netでどのようなコーディングをすればよろしいでしょうか? 以下例です。 明日の天気はおおむね晴れです。 ですが、ところどころによっては にわか雨になるでしょう。 おでかけのさいには 傘をもたれたほうがよろしいでしょう。 お気をつけて。 (というテキストファイルがあったとして) 明日の天 ですが、 にわか雨 おでかけ 傘をもた お気をつ というように保存されるようにしたいのです。

  • EXCELでフォームのテキストBOXに入力した文章を別セルに書き出すマ

    EXCELでフォームのテキストBOXに入力した文章を別セルに書き出すマクロ Excel VBAでフォームのテキストBOXに入力した文章を別セルに書き出すマクロを作成しています。 普通に書き出すことと、改行コードで改行させることはできます。 しかし、改行コード&決まった文字数(任意)で改行し、改行後の先頭に句読点が来たときには句読点で改行させるようにしたいです。 (句読点が行末に来る場合、任意の文字数に+1する) どのようにしたら良いでしょうか? 今行っている方法だと、1行で文字数での改行が2回行われるとおかしくなってしまいます。 ご教授ください

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • エクセルで乱数を作成する

    たとえば、 A1~A1000に0から始まる9桁の数字を入力したとき、 B1に、B1~B1000内で重複しない、4桁の英数文字を表示させたいのです。 マクロは使わず関数で4桁の英数文字をランダムで表示させることは可能でしょうか? よろしくお願いいたします。

  • excelからのテキスト出力方法

    はじめまして。 VBAでセルに入力された文字と固定した文字をテキストとして出力し 自動的に保存させたいのですがどうすれば良いでしょうか? イメージとしては・・・ セル・・・入力した文字 A1・・・○○○ A2・・・■■■  ↓ マクロ実行  ↓ テキスト出力・保存(D:\test.txt) ---テキスト内容--- set ○○○ set ■■■

  • エクセル マクロを使ってセルの中身をテキストボックスに移動

    いつもお世話になります。 エクセルのシート内の様々なところに(ランダム) 文字があります。 これをテキストボックスに1つずつ「変更」できますでしょうか?セル内の内容は消えて構いません。 1セル内の内容を1つのテキストボックスに移動し 場所は同じ位置に。 これをマクロを組んで行いたいと思います。 難しいお願いですが宜しくお願いいたします。

  • エクセルのマクロ(VBA)の事で質問です。

    エクセルのマクロ(VBA)の事で質問です。 A列のA1からA100ぐらいまで、各セルに以下のような文章があるとします。 -------------------------------------------- A1 今日は、天気です。 明日も良い天気になるといいですね。 -------------------------------------------- A2 今日は野菜が安いです。 昨日よりも安くて主婦には助かります。 味も美味しいです。 -------------------------------------------- ・ ・ ・ このような感じでセルの中に色々と文章が入っています。 これをマクロ(VBA)を使いB列には以下のようにしたいです。 -------------------------------------------- B1 今日は、天気です。<br /> <br /> 明日も良い天気になるといいですね。 -------------------------------------------- B2 今日は野菜が安いです。<br /> <br /> 昨日よりも安くて主婦には助かります。<br /> <br /> 味も美味しいです。 -------------------------------------------- ・ ・ ・ 要するに、改行のところに<br />タグを入れたいのです。 今までは、テキストエディタにコピペして、置換していたのですが、 マクロ(VBA)では、どのようにすればいいのでしょうか? 教えて頂けないでしょうか? よろしくお願いします。

専門家に質問してみよう