Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13994 / 76738 ←次へ | 前へ→

【68244】マクロの高速化
質問  VBA勉強中  - 11/2/17(木) 11:19 -

引用なし
パスワード
   ▼概要
INDIRECT関数を使い、1〜5回の結果から一番右端の結果を取得します。
右端が"A"や"B"といった特定の値だった場合、その左隣のセルの値を取得します。
(以降、"A"や"B"といった特定の値は1つずつ左のセルの値を取得する)

▼その他、補足
・列範囲[K:O]に1〜5回の結果
・J列に1〜5回の結果の最新の結果(空欄除く)

作成し、動作も問題ありませんでしたが、
2000行といったデータ範囲になるとかなりの時間がかかります。
以下のコード部分を改善し、マクロを高速化することは可能でしょうか?
※画面更新(ScreenUpdating)をオフにしてもあまり時間は短縮できませんでした。

-------------------------------------------------------------------
Worksheets("追加シート").Range("J32").Select                       
Selection.FormulaArray ="=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN(RC11:RC15),COLUMN(RC11:RC15)))))"         
   If Range("O32") = "A" Or Range("O32") = "B" Or Range("O32") = "" Then     
    Selection.FormulaArray ="=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN(RC11:RC14),COLUMN(RC11:RC14)))))"       
    If Range("N32") = "A" Or Range("N32") = "Aき" Or Range("N32") = "" Then    
      Selection.FormulaArray ="=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN(RC11:RC13),COLUMN(RC11:RC13)))))"     
      If Range("M32") = "A" Or Range("M32") = "A" Or Range("M32") = "" Then  
       Selection.FormulaArray ="=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN(RC11:RC12),COLUMN(RC11:RC12)))))"    
       If Range("L32") = "A" Or Range("L32") = "A" Or Range("L32") = "" Then 
         Selection.FormulaArray ="=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN(RC11:RC11),COLUMN(RC11:RC11)))))"  
       End If
      End If
    End If
   End If

0 hits

【68244】マクロの高速化 VBA勉強中 11/2/17(木) 11:19 質問
【68246】Re:マクロの高速化 SK63 11/2/17(木) 12:49 発言

13994 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free