特定の文字列を抽出するマクロについて
- マクロ初心者の方が特定の文字列を一括抽出する方法について質問しています。具体的には、ExcelのA列に記載された文章から特定の文字列を抽出してB列に表示したいとのことです。
- 質問者は、A列に100個ほどの文章があり、その中から「東京」「大阪」「名古屋」「沖縄」「。」「、」「?」の文字列を抽出したいと考えています。
- 質問者が求めている出力結果は、B列に抽出された文字列をまとめて表示することです。例えば、「東京。大阪、名古屋。」や「東京、大阪?」などの形式で表示されるでしょう。
- ベストアンサー
特定の文字列を抽出するマクロについて
こんにちは、マクロ初心者です。 調べてもどうしても分からないことがあって困っています。 どなたかお教えいただけると幸いです。 1.以下の様に100個ほどの文章があります。 A1セル 今日は東京にいます。明日は大阪に、明後日は名古屋にいきます。 A2セル 東京はまだ寒いですね、大阪はどうですか? ・ ・ ・ 2.以下の文字列を一括で抜き出したいです。 東京 大阪 名古屋 沖縄 。 、 ? 3.出力結果を以下にしたいです。 B1セル 東京。大阪、名古屋。 B2セル 東京、大阪? ・ ・ ・ ※逆に言えば、2で指定した文字列以外を全て削除してB列に返したいという意味です。 何卒よろしくお願いいたします。
- abdyic
- お礼率100% (4/4)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
正規表現。 https://www.google.co.jp/search?q=excel+vba+%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE Sub 正規表現で抽出() Dim re As New RegExp re.Pattern = "[^東京大阪名古屋、。?]" re.Global = True For i=1 to ? [B1].Value = re.Replace([A1].Value, "") Next i End Sub Forの部分はご自分でどうぞ。範囲がどこまでかしらないので。
その他の回答 (2)
- Tasuke22
- ベストアンサー率33% (1799/5383)
何が分からなくて何に行き詰まっているかが書かれていない。 ご自身も何がわからないのか分かっていないのではないでしょうか。 だから丸投げされているのだと思います。←これはここでは禁止行為です。 私はマクロの段階以前だと思います。 ANo.2の方が部分的に指摘されていますが要するに、要件定義が出来ない、 ということでしょう。 本当に行いたいことを整理整頓して、矛盾や曖昧な部分を取り除き、 本当に得たいデータを明確にしていく作業が必要でしょう。 そのような作業ができるようになるには、相当の学習が必要で、 ここでは書ききれません。 2.の文字列を一括で抜き取りたい、が一番曖昧ですね。 文字列とはなんぞやを定義しましょう。 ここの例では、地名と句読点、ですが、本当にそうなのか? 結果は地名をスペースを開けて表示したら済むのではないか? 地名はどの範囲か?日本の都道府県と市町村なのか、外国は含まないのか? 直感的には都道府県と県庁所在地のようにも思いますが。 疑問は尽きません。 少なくとも「文字列」というもっとも曖昧な言葉は「仕様」では使えません。 文字列を扱う汎用機能は例外です。
お礼
おっしゃるとおりですね!お忙しいところありがとうございます。 ちょっと捻りましたら解決できました。 自分の下手なソースを貼ってしまうと返って混乱させることになると思ったので丸投げのような形になってしまい反省しております。
- kamikami30
- ベストアンサー率24% (812/3335)
正規表現を使うべきで使った方が楽だし私も使うが、特定のもののリストを作成して全てを比較しても出来る。 スクリプトを書くよりもリスト作成の方が大変そう。 特定と言っているのに具体的な特定なものを明示しないところは理解できないが、なんとなく予想してみました。 東京、大阪までは都道府県だからいいが、名古屋は市区町村だから日本全国の都道府県と市区町村ならめんどいなと。 また、B列に出力したいらしい都道府県だか市区町村について『、』で区切りたいのか『。』で区切りたいのかどこから『?』が出てきたのかどうしたいのか伝わらない。
お礼
お忙しいところありがとうございます。 ちょっと捻りましたら解決できました。
関連するQ&A
- エクセル ピボットテーブルで同一列内の同じ文字を抽出
マクロを使い、ピボットテーブル上でA列の任意の文字をクリックすると、 A列を検索して同じ文字があれば抽出した行を反転?(青くなる奴です)したいです。 A B C ・・・ 1 大阪 50 2 静岡 15 3 東京 33 4 大阪 14 5 大阪 05 6 東京 88 この場合、セルA5の"大阪"をクリックするとA列の1行目と4,5行目の"大阪"の文字をキーワードに、1・4・5行を反転させたいのですが可能でしょうか? 当方エクセル、VBAともに初心者です。よろしくお願いします。 補足 A6セルをクリック(A6セルの上にカーソルがある状態)すれば3・6行を反転という事です。
- ベストアンサー
- オフィス系ソフト
- エクセル 特定の文字列を抽出・挿入
例えば A列にあるセルの中から特定の文字列を検索・抽出して、その特定の文字列だけB列に挿入していく関数はありますか? またはA列にあるセルの中から特定の文字列に挟まれた文字列を検索・抽出してその特定の文字列だけB列に挿入していく関数はありますか? マクロを組まないと難しいのでしょうか?
- 締切済み
- オフィス系ソフト
- 文字列リストから文字列リストの抽出
A列のリストの文字列に、B列のリストの文字が含まれていたらそれを取り出すにはどうしたらよいでしょうか? ※画像を参照してください。 例:A2セルの文字列にB2~B4の文字が含まれていないかをチェック、含まれていた文字列(B2~B4の内容)をC列に表示する。 関数なら何とかできますが、マクロの知識がほとんどありませんのでマクロが必要になるようでしたら詳しく教えていただければ幸いです。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- エクセル2000で文字列から数値を抽出したい。
エクセル2000で文字列から数値を抽出したい。 ワークシートのA列に下記の文字列が入力されています。 A1セル="123456 日本男子 54,321 7,654,321 12,345" A2セル="234567 東京都子 1,234 2,345 5,321" A3セル="345678 大阪太郎 99 689 9,876" データ間はスペースで区切られています。 後方2番目の数値をB列に取出す方法を教えて下さい。 B1セル=7,654,321 B2セル=2,345 B3セル=689 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセル セル内にリスト化された特定文字列の検索
セルが下記の文字列を含みます、その際に各セルに検索候補キーが含まれるかどうかを チェックしたいのが目的となります。 ググったりINDEXとかいろいろ使ってみたのですがうまくいかずお助けください。 任意の文字列がはいったセル A1: 明日天気になれ A2: 晴れです、明後日は A3: 吹雪、嵐です A4: 中央高速 A5: 首都高速 検索したいキーワード D1:明日 D2:嵐 D3:首都 得たい結果 任意の文字列を含むセルが複数(A:A)あり、そのセル内にリスト化(D1:D3)されたいくつかの キーワードが含まれるか検索し、ヒットした場合、そのキーワードを表示するというものです。 期待される出力結果 A1: 明日天気になれ B1:明日 A2: 晴れです、明後日は B2: A3: 吹雪、嵐です B3:嵐 A4: 中央高速 B4: A5: 首都高速 B5:首都 尚、Aには検索したい複数のキーワードは同時に含まれていないという前提での処理で かまいません。(今後精査する可能性はでてきそうですが、、) よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- <文字列マクロについて>
<文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、 指定した数だけ並べる あいうえお ←A1セルからE1まで5列(これは状況により変わる) ↓(マクロ実行:3行同じ数だけ並べるという指定) あ →A1セルから下にひたすら、同じ文字が続き順に並ぶ あ あ い い い う う →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい う え え え お お お ?規則的に並んだデータのまとまりをセットで移動する。 例だと5つの塊(これは変数とおきたい) あ A a い B b う C c え D d お E e ↓(マクロ実行) あ い う え お A B C D E ・ ・ ・ ・ a b c d e
- 締切済み
- その他MS Office製品
- エクセル 文字列を足す方法
こんにちは。 エクセル2003を使用しています。 文字列の足し方を教えてください。 A1:東京 B1:大阪 C1:東京大阪 ← 左記の出力結果を出したい。 C1セルに入力する数式はどのようにすればよろしいでしょうか。 お手数ですが、よろしくお願いいたします。
- ベストアンサー
- Windows XP
- マクロ【特定の列同士の比較方法】
いつも大変御世話になります。 【D:\test】フォルダ内に、1つのエクセルファイル(Excel2003)があります。 ・エクセルファイル名は【test.xls】。 ・シート【起動シート】と【test】があります。 今回悩んでいるのはシート名【起動シート】内にあるマクロボタンに入れるマクロです。 理想の処理は以下のようになります。 シート【test】には以下のような文字が入力されています。 A B C D ←列 1 GoodList BadList 2 L2008 L2009 3 L2009 L2015 4 L2010 5 L2015 6 L2030 ↑行 このB列のL~が入力されているセルと、D列ののL~が入力されているセルの文字を比較し、 D列に入っているセル文字と一致したら、B列のそれと同じ文字が入力されているセル文字を消す。 つまり上記例だと以下のようになります。 A B C D ←列 1 GoodList BadList 2 L2008 L2009 3 (空白) L2015 4 L2010 5 (空白) 6 L2030 さらにそのB列で消えたセル(この場合B3とB5)を空白部分を上に詰めて以下のようにする。 A B C D ←列 1 GoodList BadList 2 L2008 L2009 3 L2010 L2015 4 L2030 5 6 このようなマクロは可能でしょうか?関数ではなく、ぜひマクロで実施したいです。 ちなみに、C列には関係のない文字が入力されていますが、ここでは省略しております。 あくまで比較対象はB列とD列です。 ネット上に情報があるかと思い調べましたが、なかなかそういった処理方法にはであえませんでした。 何か簡単なサンプルコードをご教授願いますでしょうか? 余りにも初歩的な質問で申し訳ありませんが、宜しくお願い致します。
- 締切済み
- その他([技術者向] コンピューター)
- Excel2007のマクロで文字列を結合
Excel2007のマクロで文字列を結合したいのですがうまくいきません。 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- マクロを使って文字列を分類したい。
マクロを使って、次の処理を行うマクロを作りたいのですが、 まず、漢字・ひらがな・カタカナ・数時・アルファベットを識別するコードの抽出方法と、コードの一覧がわかりません。 それから、文字列の処理の関数がなかなか思いつきません。 2年ほどマクロを使っていません。エクセルも2007になり、かなり勝手が違います。 できれば、マクロを示していただければありがたいのですが、 重要なヒントを示していただいても構いません。 ----------------------------------------------- セル(H、5)の中に、いろいろな文字列があります。 例えば、 「東京1月アメリカEUやまとChinaイギリス日本2009年おわり」 ですが、 これを 漢字をA列に1行から順に、 東京 月 日本 年 ひらがなをB列に1行から順に、 やまと おわり カタカナをC列に1行から順に、 アメリカ イギリス 数字をD列に1行から順に、 1 2009 アルファベットをE列に1行から順に、 EU China というように出力するマクロを作りたいのです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
お忙しい中、ありがとうございます。 ちょっと捻りましたら解決できました。 参考になりました!