• 締切済み

カンマ形式のテキストファイルの置換

テキストファイルの変換に困っています. 1,2,3,4 5,6,7,8 というデータを 1 2 3 4 5 というように置換操作でカンマ→改行にしたいと 思っています. ・秀丸の場合 ,→\n(改行文字)でできます. でもメモ帳の場合は\nのようなエスケープシーケンス は使えません メモ帳で置換後の文字列を改行にしたいのですが どのようにしたらいいでしょうか?教えてください メモ帳でだめならエクセルではできないでしょうか?

みんなの回答

  • woo
  • ベストアンサー率40% (4/10)
回答No.7

説明不足ですみません。細かく説明します。 (1) データとはまったく別のシートを用意します。 メニューの[ファイル]-[新規作成]を選択し、新しいブックを作成します。 まず、B列の1行目に「=」、C列の1行目に「a」、D列の1行目に「1」と順に入力してください。(かぎカッコは入力不要。入力は、すべて半角英数でお願いします。) 次に、A列の1行目に「=B1&C1&D1」と入力してください。そうすると、A列の1行目は「=a1」と表示されるはずです。 2行目以降の入力値は以下の通りです。同様に入力してください。 2行目:A列:「=B2&C2&D2」、B列:「=」、C列「b」、D列:「=D1」 3行目:A列:「=B3&C3&D3」、B列:「=」、C列「b」、D列:「=D1」 4行目:A列:「=B4&C2&D4」、B列:「=」、C列「b」、D列:「=D1」 5行目:A列:「=B5&C5&D5」、B列:「=」、C列「b」、D列:「=D1+1」 この段階で、正常に入力されていれば、 A列は1行目から順に「=a1」「=b1」「=c1」「=d1」「=a2」と表示されているはずです。 また、D列は1行目から順に「1」「1」「1」「1」「2」と表示されているはずです。 (2) A列2行目を選択します。(セルが太線で囲まれた状態になります。「セル」とは1つのマス目のことです。) [Shift]キーを押しながら、[↓]キーを3回、[→]キーを3回押すと、(1)で入力したセルがすべて選択された状態になります。(背景色が青っぽくなり、全体が太線で囲まれているはずです。とりあえずここで、この太線の枠を「選択枠」と呼ぶことにします。) (3) 選択枠の右下の角を良く見ると、黒い正方形の点があると思います。 マウスポインタをこの点の上に合わせると、ポインタの形が「白十字」から「黒十字」に変わると思います。 変わったところで、左クリックをします(押したままで(4)に進む)。 (4) 押したままで、マウスをゆっくり真下(なるべく左右に動かさないで!)にドラッグすると、選択枠(灰色の線)が下にどんどん広がっていくと思います。 ポインタが画面の下のほうに来ると、シートが上にスクロールしていきます。(左端の行番号がどんどん増えていきます。) このまま、データ数と同じ行番号が出てくるまで、じっとします。 スクロールのスピードを上げるには、さらにマウスを下のほうに移動させます(シートからはみ出る位置まで)。マウスの位置を下にすればするほど、スピード速くなります。マウスを上に移動させるとスピードは遅くなり、シートの中に戻すと、スクロールは止まります。 行番号が行き過ぎてもOKです。(先ほどは「データ数と同じ行まで」とかきましたが、(5)で調整します。) (5) データ数より大きい行番号の行まで選択した状態で、マウスのボタンをはずします(A列~D列が選択されていること)。 そうすると、A列~D列まで、値が表示されていると思います。 次に、A列のセルを選択します。データ数が3000件の場合A列の3000行目のセルをを選択します。 選択したら、[Ctrl]キーと[Shift]キーを押しながら[↑]キーを押します。 するとA列の1行目~3000行目までが選択された状態になります。 (6) 選択した範囲をコピーします。 (7) メモ帳にコピーしたデータを貼り付けます。 1行目から順に「=a1」「=b1」「=c1」「=d1」「=a2」・・・となるはずです。 (8) 貼り付けたデータを再び全部選択し、コピーします。 (9) データのあるワークシートを開きます。(A列~D列に値が表示されていますよね。) データのない列(E列としましょう)の1行目を選択します。 そして、貼り付けます。 すると、希望通りデータが縦に順に表示されるはずです。 このデータをコピーしてメモ帳等に貼り付ける方法は、(5)(6)と同様です。 長くなりましたが、わからない点がありましたら、また、補足に書いてください。

  • woo
  • ベストアンサー率40% (4/10)
回答No.6

Excelにデータが格納されている状態を前提に、以下の(1)~(8)の操作を行うとできます。 (1)データとは別のシートに以下の通りに値(式)を入れる(A列~D列、1行目~5行目まで)。 =B1&C1&D1  =  a  1 =B2&C2&D2  =  b  =D1 =B3&C3&D3  =  c  =D1 =B4&C4&D4  =  d  =D1 =B5&C5&D5  =  a  =D1+1 (A列には、「a1」「b1」・・・「a2」と表示されるはずです。) (2)A列からD列の2行目~5行目までを選択する。(1行目は選択しない) (3)選択した枠の右下の角をクリックした状態で下にドラッグする。 (4)n行目(n:データの件数)までドラッグする。(途中で手を離さないこと) (5)列Aだけをすべて選択し、コピーする。 (6)メモ帳に貼り付ける。 (7)貼り付けたものをすべて選択し、再びコピーする。 (8)データのシートに貼り付ける。 言葉にすると長いですが、操作そのものはそんなに時間はかからないと思います。どうでしょうか?

ko-masa
質問者

補足

すみません.計算,グラフ処理ソフトとして ほとんどエクセルを使わないためよくわかりません. ドラッグなどの操作はわかるのですが 1&? =に=?どのセルにどの式を入れればいいのか? あと 5以降の文章がわかりません.データのあるワークシートのことでしょうか?式を作ったシートの事でしょうか? すみませんが補足お願いします

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

下のコードを実行すると、カンマで分離されたレコードから項目単位のレコードファイルを作ります。 コード中の、myFolder、oldFile に元のファイルを保存しているフォルダ名、元のファイル名を登録します。 変換したファイルは、new & 元のファイル名 で作成されます。 単に読み込んで、別ファイルに書き込んでいるだけです・・・・。ご参考に。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 ↓ Sub newTextMake()   Dim myFolder As String    '元のファイルのあるフォルダ   Dim oldFile As String     '元のファイル名   Dim newFile As String     '変換したファイル名   Dim ifreeNo As Integer, ofreeNo As Integer   Dim dt As String       'レコード中の個々の項目データ   myFolder = "C:\・・・・・\・・・\・・・・" '*** フォルダをセットします   oldFile = "・・・・.txt"          '*** 元のファイル名をセットします   newFile = "new" & oldFile   ifreeNo = FreeFile: Open myFolder & "\" & oldFile For Input As #ifreeNo   ofreeNo = FreeFile: Open myFolder & "\" & newFile For Output As #ofreeNo   While Not EOF(ifreeNo)     Input #ifreeNo, dt     Print #ofreeNo, dt   Wend   Close End Sub

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

複数列データを1列データにする方法。 複雑だけれど、下記関数式で出来ます。 VBAなら簡単ですが、。 今4項目(A-D列までに)データが入っているとします。 F1に=INDEX($A$1:$D$3,ROUNDUP(ROW(A1)/4,0),ROW(A1)-4*(ROUNDUP(ROW(A1)/4,0)-1))をいれます。 F2から4倍の行数分下へ複写します。 (本番) $A$1:$D$3--->元データの入っている範囲を指定。 5列1000行までならA1:E1000となります。 ROW(A1)/4--->5列ならROW(A1)/5に変える。 -4*(ROUNDUP(ROW(A1)/4,0-->5列(E列まで)なら-5*(ROUNDUP(ROW(A1)/5,0に変える。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

秀丸を使うのが一番だと思います。 エクセルでやりたいならば、マクロを組む必要があると思われます。

  • uratan
  • ベストアンサー率30% (38/124)
回答No.2

なるほど、縦に一列ですね。 ちなみに、このデータの用途はなんでしょうか? それによっては、他の方法が思い浮かぶかもしれません。 たとえば、エクセルのマクロで作ってしまうとか・・・。

ko-masa
質問者

補足

x  y 0.1 1 0.2 2 0.3 3 といったようなデータでy軸のみが記録されています x軸は単調増加なのであとでエクセルで作ればいいのですが 対応するy軸を一列に並べたいのです. マクロで作るってどうすればいいでしょう? 例えば 1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16 17,18,19,20 というのを一列で並べられないでしょうか? おねがいします

  • uratan
  • ベストアンサー率30% (38/124)
回答No.1

エクセルでカンマ形式のファイルを開くと、カンマごとに1セルで表示されますよ。 ちなみに、カンマ形式のファイルの拡張子が[*.csv]なら、そのままエクセルでひらきますが、その他の拡張子の場合は、エクセルを開いた後、そのファイルをエクセルの画面にドラッグすれば開きます。(デフォルトの設定の場合です)

ko-masa
質問者

補足

1セルで表示されるのはわかるのですが 横に並んでしまうので問題なのです 1,2,3,4 5,6,7,8 が 1 2 3 4 5 6 7 8 じゃなくて 1 2 3 4 としたいのですが・・. データ量が多い(3000セルくらい)ので手作業は面倒なのです

関連するQ&A

専門家に質問してみよう