アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。
エクセル2000を使っています。

テキストのデータで
A1/B1/C1    /はスペースです。
D1/E1/F1    データの長さは全部違います。
A2/B2/C2    
D2/E2/F2
A3/B3/C3    
D3/E3/F3  
   ・
   ・(続く)
といったものがあります。これをエクセルで

   A列 B列 C列 D列 E列
1行 A1 B1 C1 D1 E1
2行 A2 B2 C2 D2 E2  ・・・
3行 A3 B3 C3 D3 E3  (続く)
         ・
         ・(続く)

という感じで別々のセルにいれて貼り付けしたいのです。

テキストデータを別々のセルに貼り付けする方法は
過去ログで「区切り位置」というのをつかえばいいというのはわかりましたが、この場合の複数行にわたるテキストデータをエクセルの1行に貼り付けする方法がわかりません。また、データの長さが違うために「区切り位置」もうまくいきません。
良い解決法をお願いします。

A 回答 (5件)

データ並びが一定でなくても構わないようにしています。


テキスト何行を1行分にして読込むか、設定出来ます。(今は2行に設定)

マクロを実行するとファイル名指定のダイアログがでますので、テキストファイルを
指定すると、アクティブシートにデータが読み込まれます。

宜しかったら詳しい手順を書きますのでテストしてみてください。

1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.モジュールウィンドウに下記コードをコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
 「中」にして[OK]します。
6.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で
 「テキスト複数行を1行で読込」を指定し、[実行]ボタンを押します。

Sub テキスト複数行を1行で読込()
Dim FNum As Integer, R As Integer
Dim Col As Integer
Const RwSet As Integer = 2 '<-- 読取り行数単位指定
Dim N As Integer, Rw As Long
Dim FileName, InData, Ary
FileName = Application _
.GetOpenFilename("テキスト ファイル(*.csv;*.txt),*.csv;*.txt")
If FileName = False Then Exit Sub
FNum = FreeFile
Open FileName For Input As FNum
Col = 1: Rw = 1
Do Until EOF(FNum)
  For R = 1 To RwSet
    If EOF(FNum) Then Exit Do
    Line Input #FNum, InData
    Ary = Split(Trim(InData), " ")
    For N = 0 To UBound(Ary)
      Cells(Rw, Col).Value = Ary(N)
      Col = Col + 1
    Next N
  Next R
  Rw = Rw + 1
  Col = 1
Loop
Close #FNum
End Sub

この回答への補足

VBAはよくわからないのですが、
なんとかやりたいことができました!
ありがとうございました。

補足日時:2004/02/09 22:24
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
早速、指示されたとおりにやってみるとできました。
しかし、本番のケースはテキストファイルが職場にあるので、後日に結果を報告させてもらいます。本番の場合はもう少し複雑なデータですが・・・
とりいそぎお礼を申し上げます。

お礼日時:2004/02/08 01:23

1列分が2レコードに別れているために、区切り位置では出きず、区切り文字をカンマやTABに変えてもだめだと思います。

そこでVBAの登場です。
(テストデータ)メモ帳で
aaaaa bbbb ccc
dddd eeeeeee
fff ggggg hhhhh
ii jjjjjjj
名前を付けて保存でbbd.txtと言うファイルを作りました。
(VBAコード)エクセルのVBEの標準モジュールに
Sub test01()
Open "c:\my documents\bbd.txt" For Input As #1
j = 1
While (Not EOF(1))
Line Input #1, a
b = Split(a, " ")
For i = 0 To 2
Cells(j, i + 1) = b(i)
Next i
'----
Line Input #1, a
b = Split(a, " ")
For i = 0 To 1
Cells(j, i + 4) = b(i)
Next i
j = j + 1
Wend
Close #1
End Sub
を貼りつけて、実行します。
(結果)エクセルのシートに
A列   B列    C列   D列    E列
aaaaabbbbcccddddeeeeeee
fffggggghhhhhiijjjjjjj
がセットされました。
本番の場合、どこを変えたら良いか判りますか。
ファイル名、スタート行j等でしょうか。
A-CとD-Fに来るレコードは、必ず2レコードはペアであること。

この回答への補足

VBAはよくわからないのですが、
なんとかやりたいことができました!
ありがとうございました。

補足日時:2004/02/10 01:29
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速、指示されたとおりにやってみるとできました。
しかし、本番のケースはテキストファイルが職場にあるので、後日に結果を報告させてもらいます。本番の場合はもう少し複雑なデータですが・・・
とりいそぎお礼を申し上げます。

お礼日時:2004/02/08 01:23

#2です。


肝心のことを書き忘れていました(^_^;)。

そうやって、区切りにTabが入った文字列を、そのままコピーして、
その後、エクセル上で開始する左上のセルにカーソルを合わせてからペーストしてやると、そこにきちんとセルにわかれた状態で収まるはずです
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
データの長さの違う「区切り位置」はうまくいったみたいです。
 すみませんが、複数行のデータ(質問がよく説明できていないも知れませんが、「A1」「B1」の1の部分は同じ項目のデータでテキストでは複数行に分かれています。この項目が数百あります。)を項目ごとにエクセルの1行に貼り付ける方法も教えていただければありがたいです。

お礼日時:2004/02/07 21:58

テキストデータの(区切りに使っている)スペースを、いったんすべてtabに置換すると可能です。


Tabへの置換方法ですが、WZエディターというソフトの場合、検索文字「 」(空白)、置換文字「\t」と指定します。
また、メモ帳の場合、いったんTabをエディターか何かで入力して、それをコピー、そして、検索文字に「 」(空白)、置換文字にペーストをするとTabが入りますから、全部置換を指定するとできます。
    • good
    • 0

まず、テキストファイルのデータをメモ帳などで、スペースをカンマに置換します。


それをエクセルで、カンマ区切りで開けば良いと思いますが、いかがですか?
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
データの長さの違う「区切り位置」はうまくいったみたいです。
 すみませんが、複数行のデータ(質問がよく説明できていないも知れませんが、「A1」「B1」の1の部分は同じ項目のデータでテキストでは複数行に分かれています。この項目が数百あります。)を項目ごとにエクセルの1行に貼り付ける方法も教えていただければありがたいです。

お礼日時:2004/02/07 21:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!