こんにちわ
マクロを作成しております。
入れ子した繰り返し処理に躓いております、
もしよろしければ高速化のアドバイスをいただければと思います。
B2から下方向に値をいれております。
C1から横方向に同じ値をいれております。
B1-C1,B1-D1,B1-E1・・・最終まで
、というようにリーグ戦の総当たり結果表のような
結果を出力しようとしています。
値は数値で差分を整数で出すだけで、
重複した結果は不要ですので階段状に出力させています。
B列70行程で処理に40秒程かかってしまう状態です。
何か余計な処理や修正したほうがよさそうな箇所ははありますでしょうか?
excel2013
win8 メモリ4G
_______________
Sub test3()
Dim sh As Worksheet
Dim m As Long, i As Long, j As Long
Application.ScreenUpdating = False '非表示
Set sh = Worksheets("test")
m = sh.Cells(Rows.Count, "B").End(xlUp).Row
For i = 1 To m - 1
For j = i To m - 1
sh.Cells(j + 1, i + 2) = _
Application.WorksheetFunction.RoundDown( _
Abs(sh.Cells(1, 2).Offset(i, 0).Value - sh.Cells(1, 2).Offset(0, j).Value), 0)
’小数点切り捨てなど入れてます。
’単純にi+jにしても処理時間は変わりませんでした。
Next j
Next i
End Sub
_______________
以上です、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
コードをそのままで、B列200行程度実行しても一瞬で終わります。
コードの問題では無いですね。
PC環境かエクセルの問題だと思います。
そもそも、そのエクセルに直接文字入力した場合、入力の度に待たされる事は有りませんか?
t_fumiakiさん
ご回答ありがとうございます。
新規ブックで動かしてみたところ一瞬で完了しました。
迂闊でした、この経験は今後も活かしていきたいと思います!
ありがとうございました
No.1
- 回答日時:
こんにちは
>70行程で処理に40秒程かかってしまう状態です
という部分だけからの推測なので、全然関係ないかもしれませんが・・・
例えば、
For i = 1 To 20
For j = 1 To 10
Cells(i, j).Value = (i - 1) * 10 + j
Next j
Next i
程度の処理を走らせても、トロかったりしませんか?
(通常なら、Updateを止めたりしなくても一瞬で終わるはず)
もしもそのような場合は、コードの問題というよりは、以下あたりが原因かも知れません。(私も経験したことがあります)
http://www.saka-en.com/office/excel-open-slow/
http://www.uneidou.com/1872.php
※ ふと思いついただけですので、的外れの場合はスルーしてください。
fujillinさん
ご回答ありがとうございます、.xlb確認してみました。
復帰はしませんでしたが、office系の詳しくない箇所でしたので今後の参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
VBA SaveChanges 上書きされない
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBの質問#if 0 then ってどう...
-
DoEventsがやはり分からない
-
findは動くがfindnextがマクロ...
-
EXCEL VBA マクロ 実行する度に...
-
リョウ・・・量?料?
-
【Excel】特定の文字を含むセル...
-
Excel VBAにて2つの処理を同時...
-
Select Case文でこのようなこと...
-
VBAでセルに値が入力されるまで...
-
月度は何て読みますか?
-
Do~Loopした回数をカウントしたい
-
iD
-
FFTの結果ついて
-
Loadイベント中にほかのイベン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報