
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ランキング
-
65536は2の何乗なのでしょうか?
-
C言語を使用したプログラミング...
-
CとFORTRANの計算速度はどちら...
-
MATLABの利点と欠点
-
算術記号(+,-,/,*)を文字とし...
-
大変困っています
-
パチンコゲームを作りたいので...
-
0xf0=256?
-
[急募]Pythonについてです。
-
スレッド処理からダイアログを...
-
パソコン
-
べき乗の計算が遅い理由
-
VBAの再計算が反映されない件に...
-
正しい五十音順について
-
あるプログラムのコマンドライ...
-
volatile修飾について
-
食品HACCPに関するハードを探し...
-
OS入ってる機器のソフト・アプ...
-
gifアニメ―ションを動画(mp4で...
-
アルゴリズムとプロトコールの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
エクセルで特定のセルのみを任...
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
y=(x^2 +3x+1)^4を微分の定義を...
-
入射角反射角
-
スレッド処理からダイアログを...
-
60進数の四則計算
-
Javaと他言語比較について
-
VBAで関数をつくる
-
C言語 Σをつかったプログラム
-
CRC8を教えてください
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
おすすめ情報