3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

VBAで、数値の「整数部分」や「小数部分」を取得する – Fix関数

2010年5月26日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

今日は、午前中、港区のとあるメーカーさんで法人向けのフォローアップであった。

その最中に、ある受講生の方から出た質問に、以下のようなものがあった。

「Excelのシートに載っている値の、整数部分だけを入れ替えたいんですけど。」

事情がよく分からなくて詳しく聞いてみたところ、製品の品質検査結果を入力するシートで、小数部分は正しくても、整数部分が正規の値でない場合があるとか、そういうこと。

つまり、乱暴に言うと、以下のような感じ。

29.82 正しくは→ 8.82
62.27 正しくは→ 8.27
64.78 正しくは→ 8.78
26.38 正しくは→ 8.38
27.93 正しくは→ 8.93
82.98 正しくは→ 8.98
82.46 正しくは→ 8.46
58.92 正しくは→ 8.92
98.61 正しくは→ 8.61
91.10 正しくは→ 8.10
22.69 正しくは→ 8.69
69.51 正しくは→ 8.51
98.00 正しくは→ 8.00
24.39 正しくは→ 8.39
53.39 正しくは→ 8.39
10.64 正しくは→ 8.64
99.94 正しくは→ 8.94
67.62 正しくは→ 8.62
1.57 正しくは→ 8.57
57.52 正しくは→ 8.52
10.01 正しくは→ 8.01
10.30 正しくは→ 8.3
79.89 正しくは→ 8.89
28.45 正しくは→ 8.45
4.56 正しくは→ 8.56

で、そういうとき、どうするか。

ひとつのやり方としては、ある値の整数部分を取得する関数として、Fix関数というものがあるので、それを使う。

Fix関数のサンプルを出してみると、こんな感じか。
以下の例では、セル「A1」に「29.82」という値が入っていたなら、セル「B1」には、「29」という値が入力される。

Sub sample1()
    Range(“B1”).Value = Fix(Range(“A1”).Value)
End Sub

ならば、小数部分を取り出す、あるいは、整数部分を差し替えるマクロを作るなら、以下のような感じ。

Sub sample2()
    Range(“B1”).Value = Fix(Range(“A1”).Value)
    Range(“C1”).Value = Range(“A1”).Value – Fix(Range(“A1”).Value)
    Range(“D1”).Value = 8 + Range(“A1”).Value – Fix(Range(“A1”).Value)

End Sub

ForNext構文を使って連続操作をするなら、以下の要領だ。

Sub sample3()
    Dim c As Long
    For c = 1 To 25
        Range(“B” & c).Value = Fix(Range(“A” & c).Value)
        Range(“C” & c).Value = Range(“A” & c).Value – Fix(Range(“A” & c).Value)
        Range(“D” & c).Value = 8 + Range(“A” & c).Value – Fix(Range(“A” & c).Value)
    Next
    
End Sub

もっとも、こういうことは、他の似たような関数についての知識と同様、頭の中に丸覚えしておくべきような内容ではない。

正しくは、以前にSamuel Johnsonの言葉を引用して説明したとおり、「調べ方」を知っていれば良いだけのことだ。

There are two types of knowledge. One is to know a thing. The other is where to find it.
– Samuel Johnson
http://bit.ly/cb4I1K

実際、この研修中に質問されたときも、僕は、以下のようなキーワードで検索した。
「vba 整数部分」 http://bit.ly/dsXMln

そした、その結果表示されたページのうちの上位のものを適当に調べ、その結果をもとにして、受講生に具体的な手法をお伝えした。

それにかかった時間は、説明をしながらでも、30秒にも満たなかった。

こういうところのセンスを磨くことこそが、プログラミングに上達するということで、エクセル VBAの世界で言えば、「Excel マクロの達人になる」ということだ。

つまり、ネット検索の場合であれば、

○調べたいことを、どういう検索キーワードで調べれば見つけられそうかを判断する能力
○検索結果のページから、自分が欲しい情報が載っていそうなページに見当をつける能力
○自分が開いたページから、欲しい情報を見つけてきて、利用できる能力

といったところか。

古来のことわざに、「人に魚を与えることは一回の食事にしかならないが、魚の採り方を教えることは、生涯の糧を与えることになる」というものがある。

どうせ人に何かを、教えるのなら、付け焼き刃な話だけではなく、本質の理解につながる、その人の中に応用力を育むような話をしたいものだ。

キーワード

コメント

2 thoughts on “VBAで、数値の「整数部分」や「小数部分」を取得する – Fix関数

  1. 勤務時間計算プログラムから出力されたエクセルファイルでは、
    時間表示が 4:30のところ、4.30になっており、これを4.5にする方法を
    模索しているところ、このページが参考になり、INT関数を使うことで
    成功しました。有難うございました!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド