|
▼概要
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
|
|