スプレッドシートを軽くする方法いくつか
1.「空白」を除去する
=iferror(vlookup(A1, B:D, 3, false), "")
=if(A1="", "", vlookup(A1, B:D, 3, false))
このように、エラー時に空白を入れるなどの処理があったらすべて削除すると軽くなる。
最悪、ARRAYFORMULAで1万行とか無駄に空白が入っていることもある。
IMPORTRANGEはこの「""」をちゃんとデータとして認識するので、IMPORTRANGE先も軽くなる。
改善例:
=iferror(vlookup(A1, B:D, 3, false), )
=if(A1="", , vlookup(A1, B:D, 3, false))
2.範囲の繰り返し参照を減らす
=arrayformula(vlookup(A:A, importrange("xxxxx", "AAA!A:B"), 2, false)
この例ではIMPORTRANGEを1列分呼び出している。
LET関数でIMPORTRANGEを頭に出して一度だけ参照するようにすると少し軽くなる。
改善例:
=let(range,importrange("xxxxx", "AAA!A:B"), arrayformula(vlookup(A:A, range, 2, false))
3.揮発性関数を避ける?
Excelとは違うようだしちゃんと検証していないが、OFFSETやINDIRECTのような揮発性関数を使うよりはINDEXの方が軽い…かな…?
4.可能ならVLOOKUPを使う
こちらもしっかりと検証していないが、XLOOLUPよりはVLOOKUPの方が速いと思う。
正規表現を使わないならVLOOKUPにする。
結果列が検索列の左側にある場合は配列にするとVLOOKUPでも参照できる。
=xlookup(A1, D:D, B:B, , 0)
=vlookup(A1, {D:D, B:B}, 2, false)