• ベストアンサー

EXCELで「小数の入ったセル」だけを見つけたいのです

EXCEL2000を用いて統計表を作成しています。 そのとき「1人あたり販売額」など小数点以下の値が出る項目があります。 今までは印刷物を納入していたため特に問題にはならなかったのですが、 発注先から「小数点以下はROUNDし、数式も全て値にしてから納入すべし」 との指示が来ました。 数式はコピー→形式を選択して貼り付け→値複写 でなくなりますが、 小数点以下の値が入っているセルを見つけるのがわずらわしくて困っています。 こうした場合、編集→ジャンプ 等、簡便な方法はないでしょうか。 ご存知の方、どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.6

こんにちは。KenKen_SP です。 基本的には、#5 の mike_g さんに賛成なのですが、、今後のものならなおさら 作り変えれば済む話ですしね。 が、取り合えず、表示形式で小数点が隠されていると結構見つけるの大変かも しれないので、VBA でやってみました。 Option Explicit Sub 少数をもつセルを選択()   Const cnsPROC_NAME = "少数をもつセル"   Dim rngNum As Range   Dim C    As Range   Dim rngRet As Range   Dim blnFlag As Boolean   Dim intRes As Integer   On Error Resume Next   If UCase$(TypeName(Selection)) <> "RANGE" Then Exit Sub   If Selection.Count = 1 Then     ' 全セルの内、数値のあるセルのみ検索対象とする     Set rngNum = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)   Else     ' セルの使用領域かつ選択範囲の内、数値のあるセルのみ検索対象とする     Set rngNum = Intersect(Selection, ActiveSheet.UsedRange)     Set rngNum = rngNum.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)   End If   ' 少数をもつセルを検索   If Not rngNum Is Nothing Then     For Each C In rngNum       With C       ' シリアル値は対象外とする       If Not IsDate(.Value) And InStr(.Text, ":") = 0 And _         .Value - Int(.Value) > 0 Then         If rngRet Is Nothing Then           Set rngRet = C         Else           Set rngRet = Union(rngRet, C)         End If       End If       End With     Next C     If Not rngRet Is Nothing Then       blnFlag = True       rngRet.Select     End If   End If   ' 問い合わせて終了処理   If Not blnFlag Then     MsgBox "該当セルはありません", vbInformation, cnsPROC_NAME   Else     intRes = MsgBox( _       Prompt:="該当セルを選択しました。" & vbLf & vbLf _          & "・[はい]  Round 関数で数値を丸めます" & vbLf _          & "・[いいえ] このまま終了します", _       Buttons:=vbYesNo + vbExclamation + vbDefaultButton2, _       Title:=cnsPROC_NAME)     If intRes = vbYes Then       Application.ScreenUpdating = False       For Each C In rngRet         C.Value = Application.Round(CCur(C.Value), 0)       Next C       Application.ScreenUpdating = True       MsgBox "終了しました。" & vbLf & vbLf _          & "合計欄等が端数で変化しているかもしれません。" & vbLf _          & "ご注意下さい。", vbInformation, cnsPROC_NAME     End If   End If   Set rngRet = Nothing   Set rngNum = Nothing End Sub

その他の回答 (6)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.7

ま、こんなものでよいのではないかと。 Sub 表示未満の端数除去()   Application.ScreenUpdating = False   Dim rng As Range   With ActiveSheet.UsedRange     .Value = .Value     For Each rng In .SpecialCells(xlCellTypeConstants, xlNumbers)       rng.Value = rng.Text     Next   End With   MsgBox "正常に終了しました。", , "表示未満の端数除去" End Sub

noname#204879
noname#204879
回答No.5

対策は簡単です。 最初から全ての計算式の結果が、小数点以下をROUNDして、整数になるようにしておけば良いのです。 「小数点以下の値が入っているセルを見つける」なんてのは愚の骨頂かと。

回答No.4

No.1のtakachan7272です。 表示だけ変えてもダメなんですね。 =IF(MOD(A1,1),ROUND(A1,0),A1)ではどうでしょうか? この例は、別セルに結果を出すやり方ですが・・・ 小数点以下が有るか無いかは、数値の1で割って余りが出るかどうかで判断します。 余りが有る場合はROUND関数で四捨五入。 余りが無い場合は、そのまま対象セル値を表示です。 ちょっと手を加えれば、別セルへ結果を出さない方法も可能ですね。

  • takkuni
  • ベストアンサー率24% (166/676)
回答No.3

ROUND関数で値を求め、値複写で貼り付け。 不要な列なり行は非表示にするか削除する。 この方が楽な気がします。

  • 4500rpm
  • ベストアンサー率51% (3211/6286)
回答No.2

2002ですが、同じだと思います。 編集→検索で「.」を検索すると入力した小数点以下の値が入っているセルが見つかります。 それと >「小数点以下はROUNDし、数式も全て値にしてから納入すべし」 元の数式で四捨五入しておかないと計算結果に誤差を生じませんか? 数式で計算したものを更に計算すると見かけの値と実際の値が違うことによってつじつまが合わない事がありましたので。 それと元の値をround関数を使って整数にしておかなければ、コピぺしても小数点が残ります。

ina00
質問者

お礼

早速のご回答有難うございました。 >編集→検索で「.」を検索すると入力した小数点以下の値が入っているセル >が見つかります。 これでやってみます。有難うございました。 (また、増長して申し訳ございませんが、もし、もしもご存知でしたら「 . を含むセルを一気に選択」する方法がありませんでしょうか。そうですと作業が大変楽になるのです) >元の数式で四捨五入しておかないと計算結果に誤差を生じませんか? ご指摘有難うございました、注意いたします。 ありがとうございました。

回答No.1

〔編集〕→〔検索〕でピリオドを検索する方法が1つ しかし、面倒ですよね。 数値が指定されているセル範囲を選択して、書式設定バーの中の小数点表示桁上げを何回か押します。 (小数点以下の表示を揃える為) 次に小数点表示桁下げを押します。 小数点以下は四捨五入されて整数になります。 関数を使用する必要はありません。 ダメですかね?

ina00
質問者

お礼

早速のご回答ありがとうございました。 >〔編集〕→〔検索〕でピリオドを検索する方法が1つ なるほど、その手がありましたか。有難うございました。 >数値が指定されているセル範囲を選択して、書式設定バーの中の小数点表示>桁上げを何回か押します(小数点以下の表示を揃える為) >次に小数点表示桁下げを押します。小数点以下は四捨五入されて整数になります。 うーん、この方法ですと表示は整数化されますが、実際のセル値が変化しませんでした。 もう少し試してみます。有難うございました。

関連するQ&A