ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

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

このQ&Aに関連する最新のQ&A

A 回答 (7件)

こんにちは。

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
    • good
    • 0

ま、こんなものでよいのではないかと。



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
    • good
    • 0

対策は簡単です。


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

No.1のtakachan7272です。



表示だけ変えてもダメなんですね。

=IF(MOD(A1,1),ROUND(A1,0),A1)ではどうでしょうか?
この例は、別セルに結果を出すやり方ですが・・・

小数点以下が有るか無いかは、数値の1で割って余りが出るかどうかで判断します。
余りが有る場合はROUND関数で四捨五入。
余りが無い場合は、そのまま対象セル値を表示です。

ちょっと手を加えれば、別セルへ結果を出さない方法も可能ですね。
    • good
    • 0

ROUND関数で値を求め、値複写で貼り付け。


不要な列なり行は非表示にするか削除する。
この方が楽な気がします。
    • good
    • 0

2002ですが、同じだと思います。


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

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

ありがとうございました。

お礼日時:2006/07/01 21:43

〔編集〕→〔検索〕でピリオドを検索する方法が1つ


しかし、面倒ですよね。

数値が指定されているセル範囲を選択して、書式設定バーの中の小数点表示桁上げを何回か押します。
(小数点以下の表示を揃える為)
次に小数点表示桁下げを押します。
小数点以下は四捨五入されて整数になります。
関数を使用する必要はありません。

ダメですかね?
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
>〔編集〕→〔検索〕でピリオドを検索する方法が1つ
なるほど、その手がありましたか。有難うございました。

>数値が指定されているセル範囲を選択して、書式設定バーの中の小数点表示>桁上げを何回か押します(小数点以下の表示を揃える為)
>次に小数点表示桁下げを押します。小数点以下は四捨五入されて整数になります。

うーん、この方法ですと表示は整数化されますが、実際のセル値が変化しませんでした。
もう少し試してみます。有難うございました。

お礼日時:2006/07/01 21:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング