• ベストアンサー

タブ区切りのテキストファイルの項目を並び変えたいのです。

タブ区切りのテキストファイルの項目を並び変えたいのです。 例えば、 A りんご 犬 赤 B みかん ねこ 黄 C パイナップル ねずみ 緑 という風にタブ区切りで並んでいるテキストファイルを 赤 りんご 犬 A  黄 みかん ねこ B  緑 パイナップル ねずみ C  などという風に項目を並び変えたいのです。 EXCELに一度取り込んでVBAでコーディングすればよいのでしょうか? 具体的にどのように記述すればよいかお願いいたします。 また、インストールなどはせずに単体で動かしたいのですが、VBAではなく他の方法もあれば教えてください。

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

  • ベストアンサー
noname#182251
noname#182251
回答No.3

#1です。VBAかどうかはともかく、プログラムを組むのが一番早いのですが、プログラム(言語)を習得するのに数ヶ月かかったりして(^^; エクセルでの作業をマクロ記録し、VBAを多少いじるという方法もありそうですが、プログラムなしの方法として 1.エクセルに読み込む 2.データ全てを選択・コピー 3.新しいシートに「型式を選択して貼り付け」の「行列を入れ替える」で貼り付け 4.先頭列に一列挿入 5.先頭にできた空白列に並べ替えたい順番を記入。提示された礼ならば4,2,3,1 6.データ全体を選択し、メニューバーの「データ」、「並べ替え」で、最優先されるキーをA列にする 7.A列を削除後、前記2.3.の逆を行う こんな手順で駄目でしょうか。5.の「並べ替えたい順番」は、再利用できそうです。全手順をマクロ記録して、再利用も可能でしょう。

ajisaika
質問者

補足

ありがとうございます。 丁寧に解答していただいて、感謝しています。 実は、いったんエクセルに読み込み、列を並び替え、再び、テキストに書き出す、というのは試してみました。 (マクロ+VBAを少しいじって) しかし、プログラムとしては、なんか物足りなくて…。 できればタブ区切りごと、1行ごと、読み込んで、配列にはめていく方法も教えていただけないでしょうか?

その他の回答 (4)

noname#182251
noname#182251
回答No.5

#1、#3、#4です。たまたまある言語のメーリングリストで、まさにお問い合わせのような内容に関し面白いやりとりが展開中です。参考になれば幸いですし、少なくとも雰囲気ぐらいは感じられるのでは? http://www.freeml.com/delphi-users/1175/latest

noname#182251
noname#182251
回答No.4

#1、#3です >タブ区切りごと、1行ごと、読み込んで、配列にはめていく方法も教えていただけないでしょうか? そのようなご要望であれば、プログラミング言語の指定がないと。そして指定されても回答できないケースがほとんどと思います。ちなみにVBAは嫌いなので、できるだけさわらないで済ませようとしています。

ajisaika
質問者

お礼

ありがとうございました。 マクロで出来ることなので、マクロでやってみることにします。

回答No.2

正規表現による置換が行えるエディタを利用することで解決できます。 タブ区切りとのことですので、 ^([^\s]+)(.+)([^\s]+)$ を $3$2$1 に置換すればOKです。 試したのは、サクラエディタです。

noname#182251
noname#182251
回答No.1

エクセルならばVBAを使用しなくても、列を移動することができます。 たとえば 1.空白列を一列目に挿入 2.「赤、黄、緑」列を空白列に移動 以下略

ajisaika
質問者

お礼

ありがとうございましす。 説明不足でした。 補足を見ていただき、よろしければ、またお願いいたします。

ajisaika
質問者

補足

説明不足で申し訳ありません。 例では4項目にしましたが、実際は100項目程を並べ替えなければならず、また並び替えなければならないファイルもたくさんあるため、自動で出来るようにプログラミングしたいのです。 配列?に入れれば、とも言われたのですが、配列がよくわかりません。

関連するQ&A

  • VBA-読み込んだテキストファイルを並び替えて書き出したい

    VBA-読み込んだテキストファイルを並び替えて書き出したい ch1=FreeFile Open A for Input as ch1 ch2=FreeFile Open B for Input as ch2 DO while Not EOF(ch1) Line Input #ch1,buf Print #ch2,buf Loop Close #ch1,#ch2 で読み込み、書き出すことはできました。 やりたいことは、書き出す時に、項目を並べ替えたいのです。 例 にんじん りんご ねこ だいこん バナナ いぬ ↓ りんご ねこ にんじん バナナ いぬ だいこん よろしくお願いいたします。 区切りはタブです。

  • VBAでタブ区切りテキストの保存に関して

    VBAでタブ区切りテキストの保存のプログラムを書くためには Application.DisplayAlerts = False Sheets("sheet01").Copy ActiveWorkbook.SaveAs Filename:="D:\test.txt", FileFormat:=xlText ActiveWindow.Close Application.DisplayAlerts = True という記述が一般的に使われます。 いま、あるプログラムでexcelシート上に title subtitle 001  002  003 333  444  555 666  777  888 ような内容が書き込まれたものをタブ区切りで出力したいのですが、 上記の方法で出力すると、 titleやsubtitleと書かれた行の右側にも空白のタブ区切りが一緒に保存されてしまいます。 あるプログラムで読み込ませるためには、 この二つの行のタブ区切りをいちいち消す必要があり、毎回手作業でするのは面倒です。 VBAでこのようなタブ区切りの有無を行ごとに指定して保存するようなことは可能でしょうか?

  • [Winバッチ]テキストファイルを変換したい

    バッチファイルで次の作業を行いたいです。 ここに、次のようなテキストファイルがあります。 -------- りんご みかん オレンジ パイナップル サクランボ -------- このテキストファイルを、次のように変換したいです。 ------------------------------------- りんご みかん オレンジ パイナップル サクランボ ------------------------------------- やり方を教えてください。よろしくお願いします。

  • VBAでMSアクセスに、Tab区切りのテキストを入力できますか??

    VBAでMSアクセスに、Tab区切りのテキストを入力できますか?? VBAの「DoCmd.TransferText acImportDelim・・・」を使って、 「,」カンマ区切りテキストファイルをインポーしようとしても、 フィールドが一つになってしまいます。 テキストファイルのTabを,に変えると、正常に読めます。 Tab区切りのままで、DoCmd.TransferText ・・・ を使って、正常に 読み込みできるでしょうか?? ご教示をお願いします。

  • タブ区切りtxtファイルをCSVファイルにしたい

    数値データの入ったタブ区切りのテキストファイルが約80個あり、 それらを全てCSVファイルにしたいです。 テキストファイルのデータ形式は以下のようになっています。 339.54 1091.50 339.92 1091.50 340.30 1091.50 340.68 1057.60 341.06 1028.22 これがあと数百行あります。 コマンドプロンプトでCSVにリネームすると、数値が詰まってしまい、困っています。 例えば上のデータ例であれば、 339.541091.50 のように表示されたCSVファイルになってしまいます。 339.54, 1091.50 のようなカンマ区切りのCSVファイルとして出力する方法はないでしょうか? VBAの知識が少しだけあるので、それを使った方がいい場合は教えて頂けると幸いです。 よろしくお願い申し上げます。

  • 区切り文字をTABにしたい

    CGI-Perl初心者です。 エントリデータを、カンマ区切りテキストデータで保存するようにしていますが、(入門書のファイル操作を参照しながら何とか作れた代物です)後で大きな問題が発生しました。このデータには金額を入れる項目があって、例えば10,000円とカンマを入れると当たり前ですが、区切り文字と判断して10と000円を分けてしまうのです。そこでTAB区切りテキストデータに変更したいのですが、 $data=join(",",変数,変数,変数,変数); としている","の部分をタブにするにはどうしたら良いのでしょうか?

    • ベストアンサー
    • Perl
  • エクセルのVBAでタブ区切りのテキスを出力したい。

    エクセルのVBAでテキスト出力をしたいのですが、 ・タブ区切りで保存 ・A列の最終行×1行目の最終列の範囲指定が対象 ・範囲内の空欄もタブ区切りにする(最終列には必ず数値あり) ・出力テキストはシートと同じフォルダ内へ格納 ・テキストファイル名はシート名 という感じにしたいのです。 いろいろ検索はしているのですが、これといった回答やサンプルは 見つかっておりません(><) ちなみに、私は、自動記録をしたものを改良して少し使えるレベルです。 よろしくお願いします。

  • excel vba 複数項目の集計

    EXCEL2003 VBAにてマクロを作成しているのですが、作成日程が迫っているにも関わらず、 すぐ行き詰ってしまいます。どうかご指導お願い致します。 以下のような事をしたいのですが、できる限り高速で最も効率の良い方法を教えていただきたいと 思っております。よろしくお願い致します。 あるSheetに以下のようにデータが登録されていて、 A       B        C りんご    赤       200 なし     黄色      100 りんご    緑       100 メロン    緑       10 なし     黄色      200 りんご    緑       500 これを集計すると、 りんご  赤  200 りんご  緑  600 なし   黄色 300 メロン  緑  10 と、結果を返したいと考えています。 数字を合計するのはA列とB列がともに一致した時のみです。 最初は単純に何回もForNextで処理しようと思ったのですが、行数が 多くなると繰り返し回数も多くなり、時間もかかってしまうので、 別の方法でもっといい方法があればと思い、質問させていただきました。 宜しくお願いします。

  • テキストファイルの中身を条件で分けて2ファイルに振り分けるには?

    以下のようなテキストファイルがあります。 赤 青 黄 緑 赤 1行に1語あるとします これを重複があるものと 重複が1度も無いものに分けて それぞれをファイルに出力したいんですが ファイルA 赤 ファイルB 青 黄 緑 というようにしたいです。 PerlかPHPでと考えていたんですが どなたか良い方法を教えていただけませんでしょうか。 よろしくおねがいします。

  • VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。

    VBAで「,」⇒「.」へ置換後、タグ区切りでテキスト保存したい。 お世話になっております。 VBAで下記を行いたいと考えております。 全体の流れとしては、テキストを読み込み⇒エクセル上で編集⇒テキスト保存です。 そのエクセル上で編集⇒テキスト保存で悩んでおります。 編集した複数のシートを、個別にタブ区切りのテキストファイルに保存したいと考えております。 出力する際に、小数点の「,」⇒「.」に変換します。 ※小数点を「,」として利用しています(海外対応) 編集するシートは全てのセルが文字列形式になっており、列も行も読み込むテキストによって可変なので、統一されているわけではありません。 最終行はA列ではなくB列でカウントします。 全てのセルに値が入っているわけではなく、空白もあります。 また、各セルには「0.00000」や「02.24」等の数値も入っており、数値形式にしてしまうと0が消えてしまうので、全てのセルを文字列形式として編集しています。 なお、小数点以下の桁数も可変です。 つまり、小数点が「,」となっているのを「.」になおし、タブ区切りのテキストファイルとして保存したいのです。 出力する際に、いったん別ブックに保存⇒不要なシートを削除⇒タブ区切りで保存はできたのですが、自分があまりVBAに詳しくないせいか、これでは文字列形式で保存されなかったため、シートを新規ブックにコピー⇒タグ区切りで保存に変更しました。 しかし、これではcells.replace ~で置換すると、「00,000」が「0」になってしまいました。 ※「22,222」等は問題ないのですが……何故かは分かりませんでした。 ファイルとしては20000万行~25000行程度です。 列としては40列前後になります。 あまりVBAには詳しくないので、まとはずれな事を言っているかもしれません。 何か良い方法はありますでしょうか? 宜しくお願いいたします。

専門家に質問してみよう