こんばんはB列に上からいくつか数字が入力されているとします。
そのB列の最下行にSUM関数を入力させるマクロを作成しましたが、
なぜか計算結果が0になってしまいます。
循環になってしまっていたので反復計算にチェックをいれ、再計算させましたが思ったような答えが出ませんでした。
この計算結果が0になってしまう現象はどうやっって回避したらよいのでしょうか。合計欄をC列に変えると正常になりますが、B列に計算式を入力させると0になってしまうのは、どうしてなのでしょうか。
下記のコードが悪いのでしょうか?宜しくお願い致します。
(※通常にExcel2003を使用して、単純にセルどうしの引き算をしていても答えが0になってしまう場合があります。これも同じ循環なのかも知れませんので、回避方法を教えてください。)
Sub SUM関数を入力する()
Dim r As Integer '最下行
Dim m As Integer '対象列
Dim a As Variant
Dim siki As Variant
Worksheets(3).Activate
r = Worksheets(3).Range("B65536").End(xlUp).Row + 1
Range("B" & Format(r)).Select
m = 2
'R1C1方式で選択
a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2
siki = "=sum(" & a & ")"
Range(Cells(r, m), Cells(r, m)).FormulaR1C1 = siki
End Sub
No.3ベストアンサー
- 回答日時:
循環参照になるのは、Sum関数を適用している範囲("R2C2:R4C2")にその結果を出力するセル(Cells(4, 2))が含まれているからです。
計算範囲と出力先が重ならなくなるように変更する必要があります。
Sub SUM関数を入力する()
Dim r As Integer '最下行
Dim m As Integer '対象列
Dim a As Variant
Dim siki As Variant
Worksheets(3).Activate
r = Worksheets(3).Range("B65536").End(xlUp).Row + 1
'Range("B" & Format(r)).Select 'Formatの使い方が?
m = 2
'R1C1方式で選択
a = "R2C2:R" & r - 1 & "C2" 'rからr-1に変更
siki = "=sum(" & a & ")"
Cells(r, m).FormulaR1C1 = siki
End Sub
あと余計なことですが、この種の質問はデジタルライフ>ソフトウェア>MS OfficeかOffice系ソフトのほうで質問されたほうがより迅速で的確な回答が得られると思います。
循環とは何ぞや???から、カテゴリーの事まで
教えていただき、色々と勉強になりました。
変数もあまり使い慣れていないので、どこが間違っているのかすらにも
気がつきませんでいた。
なんだか、まだ頭が混乱していますが、
そのまま使用させていただきました。
ありがとうございました。
No.2
- 回答日時:
a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2
rをr-1
コメントにrは最下行と書いてあるがrは最下行の次の行になっている
r = Worksheets(3).Range("B65536").End(xlUp).Row + 1 (ここ +1)
全体的に書き方がまどろっこしい
Range("B" & Format(r)).Select
は何の意味?なくても問題ないようですが
a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2
siki = "=sum(" & a & ")"
Range(Cells(r, m), Cells(r, m)).FormulaR1C1 = siki
は下記の1行ですむ
cells(r,m).FormulaR1C1 = "=sum(R2C2:R" & r-1 & "C2)"
循環参照になっているとわかったら自分が設定した式を見てみればどこが間違っているかわかると思うのですが。
No.1
- 回答日時:
循環してるからでしょ。
って自分でもわかっているんですよね。いったい何がしたいのか、何を聞きたいのかがわかりません。
この回答への補足
すみません。
自分では、どこが悪いのか見つけられませんでした。
他にも通常のExcel使用時に答えが0になってしまったことがありました。
挿入した行に、売上げ合計欄と、原価合計欄のセルを引き算した式を入れたところ答えが0になってしまったようなことがあったのです。
これも今思えば恐らく、循環だったのかも知れないと思うのですが、
循環になってしまったらどうやって対処すればよいのでしょうか。
他のサイトを検索して、「反復計算にチェックをいれる」と良いとあったのですが、思ったとおりの答えが出ず、よく理解できていません。
計算式を変更することなく、通常にセル同士を引いてくれればよいだけなのですが、思ったとおりの結果を出すにはどうすれば良いのでしょうか。宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
すべてのシートを選択してエク...
-
エクセルで時刻を自動入力する方法
-
Excelのデータが重いのはなぜで...
-
excel フレームのように一部...
-
Excel VBA 答えが0になってし...
-
エクセルの既存のシートでは入...
-
エクセルで漢字がうまく並び替...
-
エクセルにおいてタグからタグ...
-
Excelの関数についてしつもんで...
-
1点の辻の字に変換したいがエク...
-
Excelでエラー(#N/Aなど)値を...
-
「未使用」と「不使用」ってど...
-
ローマ字入力で「トゥ」を入力...
-
Word文書に、チェックマーク(...
-
excelで小数点0を表示させる方法
-
SUM関数の範囲に#N/Aが...
-
Eエクセルの計算方法で空欄を0...
-
もしセルが"#N/A"なら~をする...
-
エクセルからアクセスにインポ...
-
高速フーリエ変換でデータ数が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
すべてのシートを選択してエク...
-
エクセルで時刻を自動入力する方法
-
Excelのデータが重いのはなぜで...
-
エクセル。ブック内検索で重複...
-
Excel VBA 答えが0になってし...
-
EXCEL VBA 区切り位置のプログ...
-
合計が0の行を削除
-
エクセルで、「袋詰め問題」を...
-
excelで下一桁を選択する方法
-
複数のスプレットシートで入力...
-
エクセルで30日以内に同内容の...
-
A列を検索し一致した行を表示。...
-
エクセルマクロについて データ...
-
スプレッドシートで、指定した...
-
エクセルの中の漢字を一度にカ...
-
Excelの関数についてしつもんで...
-
エクセルで隣のセルと同じ数字...
-
VBAに関する質問です。
-
エクセルの入力 エンターキーで...
-
エクセルで人名を50音順に表...
おすすめ情報