1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

重いスプシを軽くする(随時更新)

Posted at

スプレッドシートを軽くする方法いくつか

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)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?