|
▼VBA勉強中 さん:
>
>作成し、動作も問題ありませんでしたが、
>2000行といったデータ範囲になるとかなりの時間がかかります。
>以下のコード部分を改善し、マクロを高速化することは可能でしょうか?
>※画面更新(ScreenUpdating)をオフにしてもあまり時間は短縮できませんでした。
Range("J32").Selectよりは、
Range("J32").FormulaArray ="=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN(RC11:RC15),COLUMN(RC11:RC15)))))"
If Range("L32") = "A" Or Range("L32") = "A" Or Range("L32") = "" Then
は、重複している????
イベントとシート再計算をFALSEにする。
比較対象がL~O32なので、一括で配列に入れて判定する。
Dim B as variamt
B = Cells(32, 12).Resize(1, 4).Value
この当たりでしょうか??
>
>-------------------------------------------------------------------
>Worksheets("追加シート").
>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
|
|