No.1ベストアンサー
- 回答日時:
以下のように変更してみてください。
Sub test()
Dim i As Long
Dim k As Long
For i = 1 To 829 '←EXCEL2007 ならOK /EXCEL2007以外の場合は 256まで
For k = 1 To 995
If Val(Worksheets("1").Cells(k, i)) > 0 And _
Val(Worksheets("1").Cells(996, i)) > 0 Then
'0/0 の場合はオーバーフローになるので
'0以外の時のみ計算する
Worksheets("2").Cells(k, i) = Worksheets("1").Cells(k, i) / Worksheets("1").Cells(996, i)
End If
Next
Next
End Sub
EXCEL2007です。説明不足ですいませんでした。
Cells(996, i))はすべて正で、Cells(k, i)はゼロや、負のデータも含まれていましたので、
If Val(Worksheets("1").Cells(k, i)) <> 0
でオーバーフローせず、最後まで計算できました。ありがとうございました。
No.3
- 回答日時:
いや、「なぜ」ってNo.1氏の例文コメントにあるとおり「0除算がオーバーフローになる」からなんですが……
#参考:これは.NETの話ですがOffice2007で0除算ではなくオーバーフローが出る理由はおそらく同じ
#http://salv.miscnotes.com/2006/10/
No.2
- 回答日時:
Cells(k,i)のkは行数、iは列番号数です。
>For k = 1 To 995
と書いているが
2007以前は列数は256列までしか指定できません。
しばらく2007と2003以前の両者並存期間で、質問にバージョンを書かないで質問するのは、配慮が足りない。まずこの点はどうですか。
ーー
2007だとしてオーバーフローすると言うのデータ状況はどういう風ですか。
この回答への補足
2007です。説明不測で申し訳ありません。
1のsheetに995行、829列のデータ(ゼロ、正、負いろいろ)がありまして、
996行には各列の総和の値(>0)があります。
その各列の総和でその列のデータを割り算し、2のシートに書こうとしています。
始めに回答してくださったpkh4989様を参考に
If Val(Worksheets("1").Cells(k, i)) <> 0
Worksheets("2").Cells(k, i) = Worksheets("1").Cells(k, i) / Worksheets("1").Cells(996, i)
End If
を入れるとオーバフローせずに最後まで計算できました。
しかし、なぜこれで可能になったかはよくわからなかったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の課題で、1年の秒数を計...
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
Excel VBAにてFFT
-
EXCELなどで「返す」という表現
-
加速度から変位の変換について
-
CとFORTRANの計算速度はどちら...
-
CRC8を教えてください
-
2進数の乗算をc言語で計算した...
-
Java 電卓の連続計算
-
matlab計算での進捗状況を知りたい
-
matlabで計算終了
-
C言語のプログラミングの問題で...
-
等高線を計算したい
-
FORTRANで>>
-
バッチファイルでウインドウを...
-
C# 計算処理中に実行中ウィン...
-
太陽の位置計算のプログラムを...
-
四則演算プログラム(入力式の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報