Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2398 / 13645 ツリー ←次へ | 前へ→

【68235】小数点2桁のみを取得したく、お願いします Yoshi 11/2/17(木) 10:09 質問[未読]
【68236】Re:小数点2桁のみを取得したく、お願いし... neptune 11/2/17(木) 10:28 発言[未読]
【68251】Re:小数点2桁のみを取得したく、お願いし... Yoshi 11/2/17(木) 15:33 質問[未読]
【68253】Re:小数点2桁のみを取得したく、お願いし... neptune 11/2/17(木) 19:02 回答[未読]
【68239】Re:小数点2桁のみを取得したく、お願いし... とおりすがり 11/2/17(木) 10:31 回答[未読]
【68241】Re:小数点2桁のみを取得したく、お願いし... りん 11/2/17(木) 10:48 発言[未読]
【68247】Re:小数点2桁のみを取得したく、お願いし... neptune 11/2/17(木) 13:38 回答[未読]
【68248】Re:小数点2桁のみを取得したく、お願いし... りん 11/2/17(木) 14:03 発言[未読]
【68242】Re:小数点2桁のみを取得したく、お願いし... Yuki 11/2/17(木) 10:56 発言[未読]
【68276】Re:小数点2桁のみを取得したく、お願いし... Yoshi 11/2/20(日) 8:57 お礼[未読]

【68235】小数点2桁のみを取得したく、お願いしま...
質問  Yoshi  - 11/2/17(木) 10:09 -

引用なし
パスワード
   小数点以下二桁を抽出する方法を教えてください。
小数点以下だけを反映させたいのですが・・・

例えば
7.22
7.3
6.89
のように6〜7に近い数字があり、小数点以下の影響(動き)を見るために
i = Strings.Right(Cells(k, 2), 2)
とすると
7.3だけが問題になり7.31に変更するような必要があります
書式の設定で7.30にしても見掛けの0は右から2個の数字として扱えないため
小数点以下の数字のみを扱うという表現にしたいのですが
i = Format(Cells(k, 2), ".#0")も
ダメでした。
良い方法がありましたら教えてください。

【68236】Re:小数点2桁のみを取得したく、お願い...
発言  neptune  - 11/2/17(木) 10:28 -

引用なし
パスワード
   ▼Yoshi さん:
例題だけへのサンプル

Sub t()
Dim num(3) As Double '少数点以下が少なければCurrencyが固い
Dim i As Long

  num(0) = 7.22
  num(1) = 7.3
  num(2) = 6.89
  
  For i = 0 To 2
    Debug.Print ((num(i) - Int(num(i))) * 100)
  Next i
End Sub

実は・・・・何とかでした。は考慮してません。

【68239】Re:小数点2桁のみを取得したく、お願い...
回答  とおりすがり  - 11/2/17(木) 10:31 -

引用なし
パスワード
   ▼Yoshi さん:
> i = Strings.Right(Cells(k, 2), 2)
>とすると
>7.3だけが問題になり7.31に変更するような必要があります
>書式の設定で7.30にしても見掛けの0は右から2個の数字として扱えないため

Cells(k,2).text

プロパティは省略しない。

【68241】Re:小数点2桁のみを取得したく、お願い...
発言  りん E-MAIL  - 11/2/17(木) 10:48 -

引用なし
パスワード
   Yoshi さん、こんにちわ。
>小数点以下二桁を抽出する方法を教えてください。
>小数点以下だけを反映させたいのですが・・・
>7.22
>7.3
>6.89

Sub test()
  Dim NN As Currency 'Doubleだと浮動小数点がらみでおかしくなりました。
  '
  '100倍して右二文字とって数字に戻す(小数3桁以下の四捨五入なし)
  NN = 7.22: MsgBox Val(Right(Int(NN * 100), 2)), vbInformation, NN
  NN = 7.3: MsgBox Val(Right(Int(NN * 100), 2)), vbInformation, NN
  NN = 6.89: MsgBox Val(Right(Int(NN * 100), 2)), vbInformation, NN
End Sub

以下二桁だけ見たいのなら、こんなやり方も。

【68242】Re:小数点2桁のみを取得したく、お願い...
発言  Yuki  - 11/2/17(木) 10:56 -

引用なし
パスワード
   ▼Yoshi さん:
>小数点以下二桁を抽出する方法を教えてください。
>小数点以下だけを反映させたいのですが・・・
>
>例えば
>7.22
>7.3
>6.89

こんな方法も
Sub TESTa()
  Dim i    As Long
  
  With Worksheets(2)
  For i = 1 To 3
    Debug.Print Left(Split(CStr(Cells(i, 2)), ".")(1) & "00", 2)
  Next
  End With
End Sub

【68247】Re:小数点2桁のみを取得したく、お願い...
回答  neptune  - 11/2/17(木) 13:38 -

引用なし
パスワード
   ▼りん さん:
>Sub test()
>  Dim NN As Currency 'Doubleだと浮動小数点がらみでおかしくなりました。
私もsingleでおかしくなりました。一応doubleでも確認したんですけど。
やっぱりなりますか。これはデータ型の性質上どうしても仕方ないですね。

それじゃやはり小数点以下4位以内ならcurrencyが固いですね。
それか、文字列として扱うか、
1000とか10000万とか掛けて整数として扱いその結果を扱うとか。

【68248】Re:小数点2桁のみを取得したく、お願い...
発言  りん E-MAIL  - 11/2/17(木) 14:03 -

引用なし
パスワード
   neptune さん、こんにちわ。
>▼りん さん:
>>Sub test()
>>  Dim NN As Currency 'Doubleだと浮動小数点がらみでおかしくなりました。
>私もsingleでおかしくなりました。一応doubleでも確認したんですけど。
あら、singleでも駄目でしたか。

>それじゃやはり小数点以下4位以内ならcurrencyが固いですね。
ですよね。

>それか、文字列として扱うか、
>1000とか10000万とか掛けて整数として扱いその結果を扱うとか。
四捨五入に影響しなさそうな小さい数(0.000000001)を足すとかね。

浮動小数点に一番苦しめられたのはもう15年くらい前ですが、何年たっても解決しないものですね。

【68251】Re:小数点2桁のみを取得したく、お願い...
質問  Yoshi  - 11/2/17(木) 15:33 -

引用なし
パスワード
   皆様 
色々とご検討ありがとうございます。
B2-6.25 B4-6.31 B6-6.41 B8-6.62 B10-6.78・・・・とずっとあるのですが、
6.31は本当は6.30なのですが、巧くピックアップできないので、仮のお数字です。
小生のコードは以下の通りです。

Sub test()
Sheets("sheet3").Activate
Application.ScreenUpdating = False
  Dim i As Double, k As Long, m As Long
  For m = 3 To Cells(Rows.Count, 2).End(xlUp).Row + 1 Step 2
    Rows(m).Interior.ColorIndex = xlNone
  Next m
  For k = 2 To 20 Step 2
    i = Strings.Right(Cells(k, 2), 2) / 4 'この行のコードです
    Range(Cells(k + 1, 3), Cells(k + 1, i + 2)).Interior.ColorIndex = 3
  Next k
  For m = 3 To 50 Step 2
    Columns(m).Interior.ColorIndex = xlNone
    Columns(m).ColumnWidth = 0.2
    Columns(m + 1).ColumnWidth = 0.3
  Next m
Application.ScreenUpdating = False
End Sub

よろしくお願いします。

【68253】Re:小数点2桁のみを取得したく、お願い...
回答  neptune  - 11/2/17(木) 19:02 -

引用なし
パスワード
   ▼Yoshi さん:
もう私も含め多くの解決策が紹介されています。

後はYoshi さんがそれを自分のコードに利用するだけですよ。
勿論ご自分のコードに合わせる必要はあります。

【68276】Re:小数点2桁のみを取得したく、お願い...
お礼  Yoshi  - 11/2/20(日) 8:57 -

引用なし
パスワード
   皆様

色々と教えていただきありがとうございました。
おかげさまで解決しました。今後ともよろしくお願いします。

2398 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free