• ベストアンサー

エクセルでのX列

エクセルでのデータ解析について質問です。 エクセルでのデータ解析について。 前提として以下の状況です。 (1)320×240のbinファイル(ちなみに画像データです。)がある。 (2)これをbin⇒DEC変換エディタ(Transformというソフトを使用しています。)で320×240で展開する。 (3)演算して解析したいので,エクセル上にコピペしようとする。 (4)エクセルのX列は256までしかないため,ペーストできない。 (5)そこで,(2)の段階で240×320で展開 ⇒エクセルにコピペ。 (6)元来320で折り返すべきものを240で折り返しているため,アドレスは ずれる。が,数値演算するだけなら問題ない。 (7)いままでは上記のように行ってきたが,今回数値演算した後の値を使 用て,画像表示(=320×240のデータ並びで展開する)必要が出てきた。 (8) よって,(5)のあとに数値演算したエクセルシートをTransformで展開したい。Transfomrの機能として,txtやcsvファイルの展開は出来るので,対象のエクセルシートをcsv形式で保存。 (9)Transfomr展開するも前述のようにアドレスがずれているので,画像表示が上手くいかない。 以上が現状なのですが,打開するアイデアは無いでしょうか? Transfomr⇒エクセルとペーストする際に,「行列を入れ替える」を行おうと思って「形式を選択して貼り付け」を実行しても「行列を~」の項目が出ません・・・ もしくはもっと良いソフト(但し,フリー限定でお願いします。)があれば,紹介してもらえると助かります。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

[回答番号:No.2] の DOUGLAS_ です。 >Tab区切りのtxt保存は可能です  では、320列×240行で展開された タブ区切りのTXTファイル をエクセルのワークシートに読み込むマクロと、エクセルのワークシート上の240列×320行のデータを行列変換して、タブ区切りのTXTファイルに書き込むマクロの例です。 Sub TXTファイルの読み込み() '「320×240で展開」された TXTファイル を 'ワークシートの A1:IF320 に書き込みます。 '[Line Input # ステートメントの使用例] を参照  Application.ScreenUpdating = False  Dim MyTXT1 As String  Dim TextLine As Variant  MyTXT1 = "D:\hoge\hoge.TXT"  Open MyTXT1 For Input As #1  Do While Not EOF(1)   Line Input #1, TextLine   TextLine = Application.WorksheetFunction.Transpose(Split(TextLine, Chr(9)))   Range("IV1").End(xlToLeft).Offset(, 1).Resize(UBound(TextLine), 1) = TextLine  Loop  Close #1  Columns(1).Delete xlToLeft  Application.ScreenUpdating = True End Sub '上記のマクロと下記のマクロとの間で、エクセルでの数値演算を行ないます。 Sub TXTファイルへの書き込み() 'ワークシートの A1:IF320 の値を '「320×240」に行列変換して TXTファイル に書き込みます。 '[Print # ステートメントの使用例] を参照  Dim MyTXT2 As String  Dim MyCol As Byte  Dim MyField As Variant  MyTXT2 = "D:\hoge\hoge(変換後).TXT"  Open MyTXT2 For Output As #1  For MyCol = 1 To Range("IV1").End(xlToLeft).Column   MyField = Cells(1, MyCol).Resize(Cells(1, MyCol).End(xlDown).Row, 1)   MyField = Application.WorksheetFunction.Transpose(MyField)   MyField = Join(MyField, Chr(9))   Print #1, MyField  Next  Close #1 End Sub

その他の回答 (4)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.5

>ご指摘のとおりです 了解です まず、現状240X320に変換する意味は有りません むしろ160X480に変換してはどうでしょう (320を2行に分割する) その方が後の処理が簡単になります エクセルに張り付けて計算処理したあと、CSVでファイルに書き出します それをテキストエディターに読ませ、1行おきに改行を取り320X240に戻します マクロ機能が付いたエディター(秀丸等)を使えば簡単にできます もう一つは、CSVにする時にエクセルの機能を使わずにVBAでプログラムを組んで直接320X240で出力する方法もあります これはプログラムを作らなければなりませんが、暇を見てぼちぼちやってはどうでしょうか

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

>(5)そこで,(2)の段階で240×320で展開 ⇒エクセルにコピペ これって、列と行の変換をしたということではなく、241列目のデーターを次の行の1列目に持ってきたという事でしょうか?

teppekisan
質問者

補足

当方の表現力のなさで,ご迷惑おかけします。 ご指摘のとおりです。 241列目のデータが次の行の1列目に入ります。 よって,1行毎にずれていく(=アドレスがずれると表現しました。)ということです。 アドレスを重要視しない演算なら(たとえば,全データの平均値取ったり)問題なのですが,今回はデータの位置も重要になってくるため質問いたしました。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

 お示しの操作内容を十分に理解はしておりませんが。。。  (2)の段階で「320×240で展開」されたものがCSVのデータに格納できるのでしたら、ワークシートに行列を入れ替えて展開し、エクセル上で演算させておいて、再び行列を入れ替えてCSVファイルに格納する、というようなことでしたら、エクセルのVBAでできると存じます。

teppekisan
質問者

補足

ご回答ありがとうございます。 「Transform」では直接CSV保存は出来ませんが、Tab区切りのtxt保存は可能です。(=間接的にでは有りますが,CSV保存できる) よろしければ,その方法とやらを教えていただけないでしょうか?

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.1

>(4)エクセルのX列は256までしかないため X列? EXCEL2007なら1048576行×16384列ありますよ。

teppekisan
質問者

補足

当方の環境ではExcell2000までです。 2000では256までしかないのです。

関連するQ&A