• ベストアンサー

Excel VBAでの少数桁合わせ

Excelで計算した計測データをDOSのフィルタープログラムで処理するためにデータをtxtファイルへ書き込む処理を作っているのですが、少数桁を合わせる必要があるらしく、上手いこと出来ないためお知恵を拝借したいです。 その昔のBASICならば print#1 usingなどという便利なコマンドがありましたが、見あたりません。 こんな感じで並べたいのですが… #####0.00000000 #####0.00000000 #####0.00000000 横に5個ずつ並べて5000個ほどあります。ただ並べるならば問題は無いのですが。 よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Format が使えると思います。 変数名 = Format(変数名,"#####0.00000000")  Excel の表示形式と同じ指定ができます。

YHO
質問者

お礼

早速の回答ありがとうございます!! やはり、方法があったんですね。気がつきませんでした。検索能力を上げなければ… 助かりました!早速、明日会社で試してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

まず、次のようにすると次の3行のようになるはずです。(書式の最後に半角スペースがあります) 整数部分で桁ずれを起こすはずです。 Format(変数名, "#####0.00000000 ")  228834.86747742 9384.70602036 416668.29586029 555518.20993423 234366.41693115  9127.94828415 238424.89719391 7289.42155838 577929.73518372 21807.13415146  860279.91771698 22046.62561417 942691.32614136 650422.75190353 731.89258575 上のカタチでよければ問題ありませんが、有効桁数をすべてそろえるには、 Right(String(16, " ") & Format(変数名, "#####0.00000000"), 16) のようにするのも一法と思います。(下表、『_』は半角スペースの代用です)   228834.86747742 __9384.70602036 416668.29586029 555518.20993423 234366.41693115   __9127.94828415 238424.89719391 __7289.42155838 577929.73518372 _21807.13415146   860279.91771698 _22046.62561417 942691.32614136 650422.75190353 ___731.89258575

YHO
質問者

お礼

ありがとうございます。参考になりますm(_ _)m 早速明日、試してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

Sub test01() n = Cells(1, 1) Cells(1, 2) = Application.WorksheetFunction.Text(n, "###,###.00000") m = Application.WorksheetFunction.Text(n, "###,###.00000") MsgBox m End Sub を参考にして考えて見てください。(TEXT関数) http://park8.wakwak.com/~web-doc/excel/exhyouji.htm も参考に。 なおシート上での確認にはワークシートのセルの書式の数値の小数点以下の桁数を多く設定してみてください。 NumberFormatがVBAにありますが、セルの表示だけで、文字列には、実現できないでしょう。 Print Using (エヂットマスク) 文はVB(VBA)では姿を消したようです。メモリ(変数)上には実現できなくて不便だった(出力用のみ)記憶がありますが。

YHO
質問者

お礼

早速の回答ありがとうございます!! 詳しく書いてくださってありがたいです。 助かります!早速、明日会社で試してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA で日付を4ケタの数値に変換させるには?

    ある日付データを 『月』と『日付』のみの4ケタの"文字列"にさせて表示処理させたいのですが、困っております。 現在、VBAを使用しないで処理させると…こんな感じで困っています。 1.日付を yyyy/mm/dd 表示 2.編集~ 『/』のみを全て『0』に変換 3.RIGHT関数で4ケタ(または5ケタ)抜き取る *データ* 日付    yyyy/mm/dd  変換      RIGHT(4ケタ) 1月5日  2005/1/5     20050105   0105 1月10日  2005/1/10    200501010   0110  ・    ・  ・    ・ ▲不具合状況 1."1月10日" のように日付が2ケタになる日は "1010" のように表示がずれる。RIGHT(○,5) で対処する方法もあるが…効率があまり良くない。 2."yyyy/mm/dd" のデータを直で "RIGHT( )" で処理させると思ったとおりの値が戻ってこない。 yyyy/mm/dd      RIGHT() 2005/1/5    →   8537 …変な値が戻ってくる? VBAで一気にやる方法ありますでしょうか? お知恵を拝借ください!

  • ExcelでtxtファイルをVBAで読み込む方法

    スペース区切りのテキストファイル(拡張子はtxt)が有ります。 データは、数字ですが上桁には0が入っています。 00001 0003 010222 302033 00025 等のデータです。 このファイルを、ウイザードを使わずにVBAにて直接文字列(テキスト)として読み込むコマンドを失念してしまいました。 教えて下さい。宜しくお願い致します。

  • EXCELのVBマクロでテキストデータ印刷

    EXCELで編集出力したテキストデータをプリンタに印刷したいのですがどのようにプログラミングしたらいいでしょうか? 例えば、ABC.TXTというファイルをLPT1に接続しているプリンタに印刷したい場合、 DOSコマンドからだと print /d:LPT1 ABC.TXT で印刷されますが、これと同じ作業をEXCELから行いたいです。 よろしくお願いします。

  • エクセルVBAでフィルタ印刷の方法を教えてください。

    みなさまご教授ください。 顧客リストシートがあり、B列からO列まで営業担当のIDや顧客データがあります。桁数はせいぜい300桁くらい(データによりまちまち)です。 今までは担当者ごと(約60名程)にソートをしてプリントアウトしてきましたが、これをVBAで処理をしたいと思っております。 但し、60名の中には該当ナシの為プリントアウトしないケースもあります。以前の履歴を見てコピペをしても、うまく動作しません。 ポイントとして 1.1人の桁数はそんなに無いので(A4横)1枚にプリントアウトしたい。 2.抽出データによって、担当者は該当ナシの場合もあるので全てのプリントアウトはしない。 みなさまのお知恵を拝借させてください。宜しくお願いいたします。

  • テキストデータから一部の情報を抜き出して,別のテキストデータに書き出す

    テキストデータから一部の情報を抜き出して,別のテキストデータに書き出す方法についてです.DOSの知識は皆無なのでトンチンカンな質問でしたらご容赦ください. 処理内容は例えば, 001_20100601.txt 002_20106002.txt 003_20100604.txt という中身のfilename_list.txtから001,002,003だけを抜き出して, 001 002 003 という中身のid_list.txtを作りたいです.ネットで調べながら自分なりに考えてみて以下のような記述で処理できました. del id_list.txt & for /F "tokens=1 delims=_" %a in (filename_list.txt) do @echo %a >>id_list.txt 質問は2点で,do @echo %a の意義(意味)というか処理内容が分からないので,それを理解したいということと,よりスマートな記述ができやしないかということです.前者についてはforの後には何らかの実行コマンドが必要だから無理やりつけている程度にしか理解できていません. よろしくお願いします. ※MATLABからコマンドプロンプトを動かして処理しているので,そんな回りくどいことしなくても,MATLABで直接この処理ができるようならその方法も知りたいです.

  • DOSでテキストファイルの中のある文字だけを消すコマンドはありますか?

    こんばんは。WindowsXPを使っています。だからコマンドプロンプトでDOSのコマンドを使っているのですが、できないことがあって困っています。 あるテキストファイルの中にある、ある文字だけを消去するコマンドってありますか? Linuxではtrというコマンドでそれができるのですが、DOSではできないんだろうか、と疑問です。 今のところ、その操作をエディタで行っていますが、何百個というファイルを扱う予定なのでDOSのコマンドでできれば、バッチファイルを作って一括処理ができるから便利だなと考えているのです。 私はwindows98から使い始めたのでDOSはあまりわからなくて、DOS世代の方などご存知でしたら教えてください。お願いします!!

  • Excelで2行単位のソートの出来る方法があれば教えてください。

    Excelはとっても便利ですが、データの並び替え・フィルタ処理をするには、1行単位で行うようです。 項目が多い場合、1行単位でデータを記入すると横(若しくは縦)に相当広がり入力が大変不便です。 そこで2行単位で項目を設定して入力しますと約半分の長さになり、入力もしやすくなります。 そこでご質問ですが、このような2行単位でのデータの並び替え、又はフィルタを使う場合、1行単位でソートされてしまいデータがめちゃめちゃになってしまいます。 どなたか、もしExcelでデータの並び替え、又はフィルタを行う場合、2行単位で出来る方法をご存知でしたら教えて頂けないでしょうか。 当方、ちなみにExcelにおきましては、簡単なマクロ処理などを行う知識ぐらいです。 Excel VBA につきましては、ボタン等の設定程度です。 以上、よろしくお願いします。

  • エクセルVBAで配列ができなかった時の処理

    エクセルでコマンドラインでデータを配列に 落としていますがデータがなかった時 配列もできていないようなのですがその時の書式がわかりません。 Dim cmd As String Dim filedata() As String Dim i As Integer cmd = dosのコマンド Set Result = WSH.exec("%ComSpec% /c " & cmd) Do While Result.Status = 0 DoEvents Loop filedata = Split(Result.StdOut.ReadAll, vbLf) '配列データができなかった時の処理 例えば  IF filedata(0)=""  IF filedata=""  IF filedate IS Nothing など いづれもエラーになります。 なにか書式ありますでしょうか

  • LISPでフィルタープログラムを作るには。

     DOS(やUNIX)では、CやRubyなどを使い  c:\> sort < in.txt | uniq | myFilter.rb > out.txt のようにフィルタープログラムを作れるのですが、LISPではどうしたらいいのかわかりません。  関連本にはリスト処理や再帰の例題や解説はあるのですが、この方面はほとんど見たことがありません。  質問は、標準入力から一行のテキストデータを受け取り、処理後標準出力に出力するコードはどのようなものなのだろうか、ということです。あまりにも初歩的なことで申し訳ありませんが、ご教示いただければとてもうれしいです。

  • C言語プログラム

    .txtファイルのデータを読み込んで処理するプログラムを作っているのですがやり方がわかりません。 .txtファイルには 1  1.0043  34   744   0.001 7  1.0053  36  733   0.024 4   1.0056  62  621  0.003 . . . と百行くらいのデータがあります。 このデータを読み込んで3行目の2桁の数字だけを取り出す作業ができません。 34 36 62 このようにしたいのですがわかる方教えてください、お願いします。

専門家に質問してみよう