エクセルでDにA×Cの計算結果が入るように式をいれたのですが、微妙に+-2~4のずれがあります。(250×4が1002になったりする)特に何か設定をした憶えもないのです。同じテンプレートから作成しても常にその症状が起こる訳ではなく、たまになるのですが。
エクセルをいったん削除して、再インストールしても同じ状況です。
ちゃんとした答えが表示されるようにしたいのですがどうすれば良いのでしょうか?

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

A 回答 (4件)

こんにちは



 以下のページがご参考になるのでは?

Housaka's Home Page-エクセル奇譚
http://member.nifty.ne.jp/housaka/kitan01.html

Housaka's Home Page-エクセル奇譚 ~ 誤差アラカルト ~
http://member.nifty.ne.jp/housaka/kitan011.html

[XL97] 浮動小数点数値演算の結果に含まれる丸め誤差について
http://www.microsoft.com/japan/support/kb/articl …

[XL97] 数値を比較した結果が正しく返らないケースについて
http://www.microsoft.com/japan/support/kb/articl …

[XL97] 特定の小数部を持つ数値を入力した場合に誤差を生じる
http://www.microsoft.com/japan/support/kb/articl …

[XL] 浮動小数点の計算誤差と IEEE フォ-マット
http://www.microsoft.com/japan/support/kb/articl …

ROUND関数の結果を正常にするには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cg …
5.txt

四捨五入するには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cg …
2.txt

参考URL:http://www2.odn.ne.jp/excel/
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。お礼が遅くなってしまって申し訳ございません。
沢山、参考URLを教えていただいてありがとうございます。他の方々がご指摘下さった「小数点が非表示」というのとは違うようなので参考URLで調べてみようと思います。

お礼日時:2001/01/30 23:55

Dの欄の書式設定は合っているのでしょうか?


右クリック→セルの書式設定→表示形式が数値になっていますか?

日付とか時刻になっていると訳わからん答えが出てきますよ。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。お礼が遅くなってしまって申し訳ありません。
表示形式はちゃんと数値になってます。
いろいろな方にアドバイスいただいたのですが解決しなくて(泣)ネットとかでもう少し調べてみようと思います。

お礼日時:2001/01/30 23:52

INT(A*1)*INT(C*1)で計算してみてください。


これで1000になったら、AとCが小数点以下が非表示になっています。

(INTは整数化の関数です)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。お礼が遅くなってしまいまして申し訳ございません。
教えていただいた関数を入れてみたり小数点以下の表示を変えてみたりしたのですが状況は変わりませんでした(泣)もう少しネットとかで調べてみようと思います。
ありがとうございました。

お礼日時:2001/01/30 23:58

ほんとに250や4が入ってますか?


じつは250.**とか、4.**で小数点以下が表示されない設定になってるんじゃないですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。お礼が遅くなってしまってすみません。
小数点以下の表示とかいじってみたり数字をもう1回入れなおしたりしてみたのですが、状況は変わらないです。
もう少しネットとかで調べてみようと思います。
ありがとうございました。

お礼日時:2001/01/31 00:00

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELの起動時に常に同じシートを開く方法について

複数のシートを作っています。一番左側に目次というシートがあります。このファイルを複数の人で使用する為、違うシートで保存される事があります。その為、ファイルを開いた時にマクロ等を利用して、常に同じ目次というシートを開く方法があれば教えて欲しいと思います。

Aベストアンサー

[ツール]-[マクロ]-[VisualBasicEditor]
ThisWorkbookに下記を書き込むとできます。

Private Sub Workbook_Open()
Sheets("目次").Select
End Sub

Q異なるブックに同じ書式、列幅のテンプレートをコピー→貼り付け

・・・をしたいんですが、同じブック内だったらうまくいくんですが、ブックが異なるとうまくできなくてこまっています。お願いします。

Aベストアンサー

コピー元のSheetを選択し
  ↓
「編集」→「シートの移動またはコピー」を選択
  ↓
出たダイアログボックスで「移動先ブック名」と「挿入先」を選択、「コピーを作成する」にチェック
  ↓
「OK」

でどうでしょうか?

Qエクセルで、常に同じ場所が印刷されるようにするには

タイトルの件、質問いたします。

【やりたい事】
常に、A1セルという場所が印刷されるようにしたい

ただし、A1の内容は、オートフィルターにより、変わります。
例えば、A1で印刷設定をしておいても、オートフィルターによりソートすることで
A1の場所には、A15や、A18のセルが選択されることがあります。

あくまでも、画面上のA1の場所という意味です。

以上、ご存知の方、いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

例が良くないな。

> ただし、A1の内容は、オートフィルターにより、変わります。
> あくまでも、画面上のA1の場所という意味です。

どれだけ頑張ってもA1はA1。
A15やA18に書き換わる・置き換わる事は無い。

さらに言うなら、フィルタ範囲の1行目はタイトル行として扱われるから、
1行目をフィルタ範囲に含んでいるなら1行目が見えなくなることはありえない。


オートフィルタを掛けた結果の1つめのデータを印刷したい、と言うのであれば
印刷範囲の設定を解除、常に1ページ目だけを印刷する「クセ」を付けたら良い。

Qエクセル 4列2列×2セットの同じ並び方

2箇所の商品在庫数の合計を出すのために、
横を同じ品番に揃えたいのですが、
以下の◆並び方前から◆並び替え後に並びかえる方法はありませんか?
宜しくお願いいたします。

◆並び方前

倉庫1 品番 倉庫1在庫 倉庫2品番 倉庫2在庫
pin6 1 pin9 1
pin7 1 pin11 2
pin8 1 pin13 1
pin9 2 pin14 1
pin10 1 pin15 1
pin11 1 pin18 0
pin12 1 pin19 1
pin13 1
pin14 1
pin15 1
pin16 1
pin17 1
pin18 1
pin19 1

◆並び方後

倉庫1 品番 倉庫1在庫 倉庫2品番 倉庫2在庫
pin6 1
pin7 1
pin8 1
pin9 1 pin9 1
pin10 1
pin11 1 pin11 2
pin12 1
pin13 1 pin13 1
pin14 1 pin14 1
pin15 1 pin15 1
pin16 1
pin17 1
pin18 1 pin18 0
pin19 1 pin19 1

2箇所の商品在庫数の合計を出すのために、
横を同じ品番に揃えたいのですが、
以下の◆並び方前から◆並び替え後に並びかえる方法はありませんか?
宜しくお願いいたします。

◆並び方前

倉庫1 品番 倉庫1在庫 倉庫2品番 倉庫2在庫
pin6 1 pin9 1
pin7 1 pin11 2
pin8 1 pin13 1
pin9 2 pin14 1
pin10 1 pin15 1
pin11 1 pin18 0
pin12 1 pin19 1
pin13 1
pin14 1
pin15 1
pin16 1
pin17 1
pin18 1
pin19 1

◆並び方後

倉庫1 品番 倉庫1在庫 倉庫2品番 倉庫2在庫
pin6 1...続きを読む

Aベストアンサー

No.1・2です。

お礼欄の表を拝見するとC列に重複品番が出現していますね?
これも考慮する必要があるのですね?

↓のコードに変更してみてください。

Sub Sample2()
Dim i As Long, lastRow As Long, c As Range
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row
Set c = Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(c.Row, "E") = Cells(i, "C")
End If
Next i
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
With Range(Cells(2, "F"), Cells(lastRow, "F"))
.Formula = "=IF(E2="""","""",SUMIF(C:C,E2,D:D))"
.Value = .Value
End With
Range(Cells(2, "E"), Cells(lastRow, "F")).Cut Range("C2")
Range(Cells(2, "C"), Cells(lastRow, "C")).SpecialCells(xlCellTypeConstants).Copy Range("E2")
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
With Range(Cells(2, "F"), Cells(lastRow, "F"))
.Formula = "=SUMIF(C:C,E2,D:D)-SUMIF(A:A,E2,B:B)"
.Value = .Value
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

マクロを実行後は↓の画像のような感じになりますが、
これで良いのでしょうか?m(_ _)m

No.1・2です。

お礼欄の表を拝見するとC列に重複品番が出現していますね?
これも考慮する必要があるのですね?

↓のコードに変更してみてください。

Sub Sample2()
Dim i As Long, lastRow As Long, c As Range
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row
Set c = Range("A:A").Find(what:=Cells(i, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(c.Row, "E") = Cells(i, "C")
...続きを読む

Qある条件を加えてもマクロをちゃんと動かしたい

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Count <> 1 Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value <> 1 Then Exit Sub
If Intersect(Target, Range("W:W, AC:AC, AQ:AQ, AW:AW")) Is Nothing Then Exit Sub
i = Target.Column - 6 '
Debug.Print Target.Address & " " & Target.End(xlToLeft).Column
If i < 1 Then Exit Sub
Target.Offset(0, i - Target.Column).Resize(1, 5).Copy
Application.EnableEvents = False
Target.PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = False
Application.EnableEvents = True
Target.Select
end sub

上のコードはW列、AC列、AQ列、AW列に1と入力すると、入力セルから
みて6つ左から5つのデータがコピーされるマクロです。ここでAK列、BE列からみて8つ左から5つのデータをコピーする
条件を付加したいのですがうまくいきません。

If Intersect(Target, Range("AK:AK, BE:BE")) Is Nothing Then Exit Sub
i = Target.Column - 8 '

↑ このコードを追加する感じです。 
この条件を付加しなければうまく動くのですが、付加して何とか動かしたいと考えています。
何か良い方法があればおしえていただけると幸いです。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Count <> 1 Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value <> 1 Then Exit Sub
If Intersect(Target, Range("W:W, AC:AC, AQ:AQ, AW:AW")) Is Nothing Then Exit Sub
i = Target.Column - 6 '
Debug.Print Target.Address & " " & Target.End(xlToLeft).Column
If i < 1 Then Exit Sub
Target.Offset(0, i - Target.Column).Resize(1, 5).Copy
Application.EnableEvents = False
Target.PasteSpec...続きを読む

Aベストアンサー

ふつーに丁寧に作成していけば,今の延長でも別にムズカシイ作業じゃありません。

private sub worksheet_Change(byval Target as excel.range)
 dim i as long
 if target.count > 1 then exit sub
 if target <> 1 then exit sub

 if not application.intersect(target, range("W:W,AC:AC,AQ:AQ,AW:AW")) is nothing then
  i = -6
 elseif not application.intersect(target, range("AK:AK,BE:BE")) is nothing then
  i = -8
 else
  exit sub
 end if

 application.enableevents = false
 target.resize(1, 5).value = target.offset(0, i).resize(1, 5).value
 application.enableevents = true
end sub


他にも例えばSelect caseを使い,Target.columnで仕分けてみるなんてやり方もアリかもしれませんね。

ふつーに丁寧に作成していけば,今の延長でも別にムズカシイ作業じゃありません。

private sub worksheet_Change(byval Target as excel.range)
 dim i as long
 if target.count > 1 then exit sub
 if target <> 1 then exit sub

 if not application.intersect(target, range("W:W,AC:AC,AQ:AQ,AW:AW")) is nothing then
  i = -6
 elseif not application.intersect(target, range("AK:AK,BE:BE")) is nothing then
  i = -8
 else
  exit sub
 end if

 application.enableevents = false
...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報