[[20200518220017]] 『txtデータから読み込んだ数値を完全に四捨五入しax(ぶび男) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『txtデータから読み込んだ数値を完全に四捨五入したいです』(ぶび男)

Sub テキスト読み込み()

    Dim Tab5 As String, Path As String
    Dim Base As String
    Home = "ホーム画面"
    Sheets(Home).Select
    Tab5 = String(5, vbTab)                      'テキストF列
    Path = "C:\Users\user\Desktop\結果"
    ChDir Path
    File = Dir(Path & "\" & "*.txt")
    re = 7                                     'エクセルG列
    Do While File <> ""
    Open Path & "\" & File For Input As #1
    Line Input #1, s                          'テキスト2行目から
    B = 11                                    'エクエル11行目
    Line Input #1, s
    s = Split(s & Tab5, vbTab)(5)
    Do While Not EOF(1) And s <> ""
    Cells(B, re) = s
    B = B + 1
    Line Input #1, s
    s = Split(s & Tab5, vbTab)(5)
    Loop
    Close #1
    File = Dir
    re = re + 1
       Loop
End Sub
以前ここで教えて頂いたものを弄って
フォルダ内にあるテキストのF列2行目からある限りの数値を
エクセルのG11行目から全て読み込むというコードを教えて頂いたものです。

このコード四捨五入して(0.001)台にして同じ場所に読み込むというのは
可能でしょうか。
一度あれこれやってみて出来た!と思ったのですが、セルをクリックすると0.33556643と中身は数値が細かく入っておりうまくいきませんでした。
例えばテキストの数値が0.3326567であればエクセルには0.333とだけ読み込まれる。
というコードの追加は可能でしょうか。
すみませんがわかる方いましたらよろしくお願いします。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


Cells(B, re) = Round(CStr(s), 3)
などとしてみてはどうでしょうか。
(γ) 2020/05/18(月) 23:08

(γ)様

すごく適当な感じだなぁと疑いながら試してみて申し訳ありませんでした。
出来たというよりこれ以上ない完璧さでした。。。
この知識量・・同じ人間なのか、、、ありがとうございました。

(ぶび男) 2020/05/18(月) 23:33


Round(CDbl(s), 3)と書いたつもりだった・・・。適当でしたね、結果的に。
Round関数は相手がStringでも、数値とみなせるなら忖度して計算してくれるようです。
だからRound(s, 3)でも動作はするものの、
やはりRound(CDbl(s), 3)と書くのがよいでしょう。
それとコードはきちんとインデントを付けた方がよいと思います。

(γ) 2020/05/19(火) 04:55


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.