• ベストアンサー

EXCELのテキスト変換

EXCEL97ですが、以下のようにデータをテキスト変換する方法を教えてください。 データの中で1項目だけを取り出してテキストデータに変換したいのです。  例) 安部太郎 aaa@abc.co.jp 999-222-2222 佐藤太郎 bbb@abc.co.jp 999-333-3333 というデータのURLだけを抽出して     aaa@abc.co.jp , bbb@abc.co.jp とデータ毎に改行して、しかも間に,の行を入れてテキストとして出力したいのです。 よろしくお願いします。

noname#894
noname#894

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

A2から下方向にデータが並んでいるときの方法です。必要なURLの前後は『半角スペースとしています』 標準モジュールに貼り付けます。ご参考に。 Public Sub writeURL()   Dim outFilename As String '出力ファイル名   Dim rw As Long '行カウンタ   Dim dt As String 'データ   Dim pot1 As Integer '区切り位置1   Dim pot2 As Integer '区切り位置2   outFilename = "C:\My Documents\・・・・" & "\myTestFile.txt"   Open outFilename For Output As #1   For rw = 2 To Range("A65536").End(xlUp).Row     dt = Range("A" & rw)     pot1 = InStr(dt, " ")     pot2 = InStr(pot1 + 1, dt, " ")     If rw <> 2 Then Print #1, ","     Print #1, Mid(dt, pot1 + 1, pot2 - pot1 - 1)   Next   Close End Sub

noname#894
質問者

お礼

お礼が遅くなりました。 教えて頂いたモジュールをちょっと変えて実行したところ 上手くいきました。 ありがとうございました。

その他の回答 (3)

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.4

エクセルだけでは実現可能では無いのでは? したがって先ほどのCSVを変換してはいかがですか ozconv 簡単・テキストコンバータ HTMLの表からCSVに変換したり、引用符つけたり、コード変換したり、色々加工可能 と色々書いてありました 別にHTMLにこだわらず一回試されたらいかがですか?

参考URL:
http://www.vector.co.jp/soft/win95/net/se162031.html
noname#894
質問者

お礼

アドバイスありがとうございました。 nishi6さんに教えて頂いたモジュールでできました。 おそらく私の質問内容があまり要領えず、お手数をおかけ したと思います。 すいません。ありがとうございます。

  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.2

参考回答として,のテキストを入れない方法で回答します 例題だとB列がアドレスのようですので B列をコピーして 新しいエクセルに貼り付け 登録する時にCSVで登録すればOKです。 なぜ,行が必要か不明な為、参考回答です。 何かあれば補足して下さい。

noname#894
質問者

お礼

ありがとうございます。 EXCELのデータをWindowsでないシステム に渡すために、データの区切りの識別としてカンマ行 が必要なようです。

  • Methyln
  • ベストアンサー率29% (242/823)
回答No.1

>データの中で1項目だけを取り出してテキストデータに変換したいのです。 >例) 安部太郎 aaa@abc.co.jp 999-222-2222 これって1つのセルに全部書かれているということではないですよね? で、あれば、URLのセルの行だけ選択して、他のシートにコピーして コピーされた行の次の行にカンマをコピーして、CSV形式でファイル出力 すれば、希望通りになると思います。 もし、同一セルに書いてあるなら、一度CSV形式で出力して、 そのファイルをカンマとスペースで区切るようにしてあげれば、別々の セルに分かれます。

noname#894
質問者

お礼

ありがとうございます。 データは複数のセルに書かれています。 データ件数が多く、データの間の行にカンマを入れなけ ればならない(挿入)ために簡単にできないかと思って います。 できれば変換時にカンマの行を自動挿入できればと思っ ています。

関連するQ&A

  • Excelからテキストへの変換に際して

    Excelからテキストへの変換に際して 一つのセルに改行を含むデータがあり、それをテキストに1行として 出力したいです。 何か良い方法はありますでしょうか?

  • perlでのcsv形式のテキストファイルの変換

    perlを使用してcsv形式のテキストファイルを下記のように変換したいと思っています。 【変換前】 10, abc , def , ghi ,jkl    ----1行目 10, abc , def , aaa, bbb   ----2行目 10, abc , def , ccc , ddd  ----3行目 11, abc , def , eee , fff   ----4行目 11, abc , def , aaa , ggg ----5行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 【変換後】 10, abc , def , ghi ,jkl    ----1行目 11, abc , def , eee , fff   ----4行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 変換内容はcsv形式のテキストファイルで、”,”で区切った先頭3列が 前の行の先頭3列と同じならその行は出力しない、といった 変換をしたいと思っております。 (例えば2行目ですと先頭3列は10, abc ,defになっており、  1行目の先頭3列と同じ文字列になっているためこの行は出力しない) 当方、Perl初心者で上記のようなことがPerlでできるかも よくわかっておりません。 そこで、上記のような変換はPerlで可能なのか、そしてもし可能であるのなら どのようにPerlで記述すればできるのか教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Perlでのテキスト変換方法に関して

    テキストファイルをperlを使用して下記のように 変換したいと思っています。 --------------------------- 【変換前】 aaa 8000 52 ---1行目 abc 200 48 ---2行目 cbd 250 31   ---3行目 efg 98 45   ---4行目 abc 390 68   ---5行目 ddd 89 90   ---6行目 aaa 65 40   ---7行目 fed 900 66   ---8行目 efgh 99 49 ---9行目 abc 40 40 ---10行目 【変換後】 aaa 8000 52   ---1行目 cbd 250 31   ---3行目 efg 98 45   ---4行目 abc 390 68   ---5行目 ddd 89 90   ---6行目 fed 900 66   ---8行目 efgh 99 49 ---9行目 ---------------------------- やりたいことはまず行の先頭文字列(aaaやabc)が完全に一致する行が 複数あれば(2,5,10行目のabcや1,7行目のaaa)、2番目の文字列(スカラー値)の値が 小さい方の行は出力しないようにしたいと思っています。 例えば上記の場合ですと、2,5,10行目の最初の文字列はaaaで完全に一致しており、 2番目の列の値は5行目が390に対し、2行目は200、10行目は40と小さくなっているため 2行目,10行目は出力されない、というのが望んでいる動作です。 sortを使用してどうにかならないかとも、考えたのですが そこから先がどうしていいか思いつきませんでした。 何かよい方法を思い浮かぶ方がいましたら、どのようにPerlで記述すればよいのか 教えて頂けないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • Accessのデータをテキストファイルで出力する方法を教えてください。

    Accessのデータをテキストファイルで出力する方法を教えてください。 クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。 DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt" フィールドごとに改行して出力する方法はないでしょうか? <クエリ結果> フィールド1  フィールド2  フィールド3 aaa      bbb      ccc <出力テキストファイル> aaa bbb ccc

  • テキストデータをエクセルに変換したい!

    改行されていない連続したテキストデータをエクセルに変換したいのですがどうしたらいいのでしょう? 普通、レコード毎に改行されたテキストデータならば、エクセルから該当のテキストファイルを読み込めば区切ってやればいいと思うのですが、改行されていないため、縦に並ばずにすべてのデータが横に並んでしまっています。 すいません、教えてください。

  • エクセルのRIGHT関数の応用方法?について

    URLのような文字列で、複数の「/」(スラッシュ)が含まれる場合、一番右(最後)のスラッシュより右側の文字列のみを抽出したいときは、どのような関数を記述すれば良いか、を是非お教えください。 http://www.abc.com/aaa/index01.html ⇒「index01.html」のみを抽出したい http://www.abc.com/aaa/bbb/index02.html ⇒「index02.html」のみを抽出したい http://www.abc.com/aaa/bbb/ccc/index03.html ⇒「index03.html」のみを抽出したい ※もし、RIGHT関数を使う方法でない場合は、その旨ご教示いただけると助かります。 どうか宜しくお願いいたします。

  • リッチテキストをテキストに変換

    お世話になります。 アクセスVBAでデータをリッチテキスト形式にて出力することはできたのですが、その後、出力したリッチテキストをテキスト(改行つき)で保存する方法がわかりません。マクロなど使えば可能なのでしょうか?? 出力の際に、テキストで出力すればいいだろうって話かもしれませんが、そこはリッチテキスト形式にて出力する課題なんです(^_^;)

  • 一部が共通の複数行を1行にまとめるには

    以下のようなテーブルがあります。 項目1  項目2  項目3  項目4 ------------------------------------------------- AAA  あああ  (NULL)  5678 AAA  あああ  1234 (NULL) BBB  いいい  @@@@ (NULL) BBB  いいい  (NULL)  **** CCC  ううう  &&&& (NULL) これを 項目1  項目2  項目3  項目4 ------------------------------------------------- AAA  あああ  1234 5678 BBB  いいい  @@@@ **** CCC  ううう  &&&& (NULL) のように項目1、2が同じ値、かつ項目3、4が(NULL)の部分を1行にまとめたいのです。 データ「CCC」の行のように項目1、2が同じものがなければ、何もせずそのまま出力もしたいです。 よろしくご教授お願いいたします。

  • 改行区切りのテキストをExcelに取り込みたい

    改行区切りのテキストを以下のようにExcelに取り込みたいのですが、やり方がわかりません。どうぞやり方を教えてください。 山田太郎 住所:千葉 性別:男 佐藤愛子 住所:山梨 性別:女 ↓↓↓↓↓↓↓↓↓↓ 名前  |住所|性別 山田太郎|千葉|男 佐藤愛子|山梨|女 よろしくお願いします。

  • Excel VBAでのテキスト出力について

    excel vbaでの文字列出力について エクセルからテキスト(メモ帳とか)に出力したいのですが 下記のように出力できなくて困っております。 どなたか教えてほしいです。 ●入力エクセル AAA BBB CCC DDD EEE セル(1,1)~(1,5)にそれぞれ文字列が入っている状況です。 これを下記のように出力したいのです。 ●テキスト出力 "AAA","BBB",CCC,"DDD",EEE CCCとEEEをダブルクォーテーションを付けないで出力したいのです。 出力の方法でwriteとprintがありますが writeで Write #1, Cells(1,1),Cells(1,2),Cells(1,3),Cells(1,4),Cells(1,5) やると、自動で全ての文字がダブルクォーテーションで囲まれて、カンマが自動でつき "AAA","BBB","CCC","DDD","EEE" のようになってしまします。CCCとEEEのダブルクォーテーションが不要です。 printで Print #1, CStr(Cells(1,1)), & "," CStr(Cells(1,2)), & "," Cells(1,3), & "," CStr(Cells(1,4)), & "," Cells(1,5) とすると "AAA", "BBB", CCC, "DDD", EEE となり、カンマの後ろに空白が何個か入った状態になります。 (ブラウザでは空白が分かりづらいですが、テキストですと入っております。) Trim関数でTrim(",")とか色々試しましたが上手くいきません。 どうしたら望み通りの出力ができるでしょうか。 ぜひ教えて頂きたいです。 よろしくお願いします。

専門家に質問してみよう