ムテキハック

エンターテインメントやライフハックを紹介する雑記ブログです

【SpreadSheet】ArrayFormula関数を使って華麗なる理想的な連番(ID)作り|Excelでは不可能なGoogleSpreadSheet独自の関数を使いこなして効率的かつ保守しやすい手法を紹介

スポンサーリンク

どうも!世界のムテキンです!

読者のみなさん、GoogleSpreadSheetは使っていますかGoogle社が提供しているExcelのようなクラウドソフトウェアのことです。

Excelとは違って、複数人でひとつのファイルを編集することができるため、チームでなにかを作るクリエイティブな仕事には欠かせないツールになっています。以前はマクロが使えなかったりピボットが使えなかったりと、Excelよりやや劣る点が目立っていましたが、今やほとんどの機能がリリースされてExcelとは遜色のないパフォーマンスが出せるツールになってきました。

さらに、GoogleSpreadSheet独自の多くの便利な関数が使える点も魅力のひとつになっています。

いまや、大手のIT企業ではExcelを使う会社は減って、このGoogleSpreadsheetを使うことが主流になりつつあります。

今回は、このSpreadsheetをより効率的に使うための技を紹介できればと思い、記事を書きます!

なぜこの記事を書こうと決心したか

ネットでおすすめされているIDの作成方法がこぞってイケていないのです…!なぜ、ネット上にはこんなにアンチパターンばかりで溢れているのか、怒りが湧いてくるほどです。

本記事ではIDを作るための様々な手法を紹介させていただき、メリットとデメリットをまとめます!

そして、あらゆる手法の中でも最も効率的で、保守性が高く高速な方法を紹介させていただこうと思います。この記事を読んで連番を作成できるようになれば、普段の作業の質が大幅に向上するかもしれません。

正しい連番の作り方を学んでみてください!

連番(ID)を作る意味と用途

IDはidentificationの略で、対応するデータを一意に示すための符号のことを指します。それゆえに、IDは必ず重複してはいけません。

多くのデータを取り扱う場合、あるデータがどの行のどのレコードなのかということを具体的にする必要があります。例えば「ID1の件について〜」と言えば、そのデータが何をさしているのかが具体的になり、探しやすくなりますよね。そういった目的で、重複しない一意の数字として連番を振ることが一般的なのです。

連番を作る方法

ダメ手法①:各セルに数字を直接打ち込む方法

作り方

手順
  1. 複数のセルに途中まで連番を入力する(1,2まで入力すればOK)
  2. 入力したセルの範囲を選択する
  3. 選択範囲をマウスで掴んで最下部まで引き伸ばす

GoogleSpreadSheetで開く

はいはい。簡単じゃん。

と、Spreadsheetに慣れていない人にやらせると、8割以上がこの方法でIDを作ります。たとえショートカットを駆使したとしても、この作成方法はとてもイケてないです。

メリット
  1. 作業手順を間違えなければ、一意の連番を作ることができる
  2. あとから誰が見ても理解できる(テキストですから)
デメリット
  1. コピペなどの作業をしたときにIDが重複するリスクがある
  2. セルにそのままテキストが入っているので消すことができて容易にIDが虫食い状態になりうる
  3. 作業工程に無駄が多すぎる
  4. 泥臭くてかっこ悪い

この連番の作り方はとても無駄が多い作業です。この方法を選択するメリットはほぼ皆無なのでやらないように!

ダメ手法②:行頭の数字をインクリメントして作る方法

作り方

手順
  1. 1行目に数字の1を入力する(初項を決める)
  2. 2行目以降は相対的に『前のセル+1』の数式を入れる(等差級数1の等差数列を作る)
  3. 2行目以降の数式を行末までコピペする

GoogleSpreadSheetで開く

関数を使うので、ちょっとだけ文明が進歩したように見えますね。しかし、この方法も手法①と同じくらい微妙です。

メリット

  1. 行頭の数字(初項)を変えるだけで、簡単にIDを振り直すことができる

デメリット
  1. 連番の途中を消してしまった場合、以降のIDが1から開始して重複する
  2. 「切り取り」→「貼り付け」の操作を実行すると参照エラー『!REF』が発生する
  3. 計算処理が各セル単位で実行されているため無駄な計算負荷がある
  4. 泥臭くてかっこ悪い

ちょっとダメ手法③:行番号を利用する方法

手順
  1. 1行目に『=ROW()-n』の数式を入れる
  2. 1行目の数式をコピーして2行目以降にもコピペする

GoogleSpreadSheetで開く

かなり無駄がなくなって洗練されてきました。

行番号を参照しているので、行ごと削除したり切り取り削除を実行しても連番が一意の番号が割り振られます。

Excelを使っている人にとっては一番美しい連番の作り方だと思います。

メリット

  1. 作業がシンプルなのでミスをしにくい
  2. IDを消してしまった場合、穴あきになるが、IDが振り直されることはない

デメリット

  1. レコードがはじまるより上に行を追加するとIDがズレる
  2. 行番号を参照しているため、IDを確定して保持することができない(前の行をいじるとIDが振り直されてしまう)→行を消したり移動しなければIDは保持されるのでルールを徹底すれば問題ない

正しい手法:ArrayFormula関数と行番号を組み合わせる方法

手順
  1. 1行目に『=ArrayFormula(Row(列範囲))』の数式を入れる ※たったこれだけ!

GoogleSpreadSheetで開く

ArrayFormula関数とは?

『array:配列』と『formula:数式』を組み合わせた名前の通り、数式を範囲(配列)で取り扱うことができる関数です。好きな関数を指定した範囲の中でそれぞれ実行した計算結果を返してくれます。

配列数式から返された値を複数行または複数列に表示したり、非配列関数で配列を使用したりすることができます。

https://support.google.com/docs/answer/3093275?hl=ja

なにかの計算をしたいとき、普通はそれぞれのセルの中に数式を入れると思いますが、この関数を使うと入力したひとつのセルの中で計算が実行されて、その計算結果が各セルに展開されて表示されます。

ArrayFormula関数は超高速処理!

Excelでは配列数式を使うと重くなるという評判も聞きます。
しかし、Spreadsheetは、ArrayFormulaを使ったほうが断然速いことが判っているので、積極的に使いましょう。

関数入力用のショートカットキーがある

ショートカットキーMac : ⌘+Shift+Enter
Windows : Ctrl+Shift+Enter

他の関数の入力には存在しないショートカットが、なぜかこの関数にだけ存在しています。この関数だけを特別扱いしているところを見ると、Googleがどれだけこの関数を使ってほしいかわかりますね。

しかも、Enterを絡ませるというとてつもなく被りそうなキー割当に自信が溢れてます!!

まとめ

本記事ではGoogleSpreadSheetで使える、様々な連番(ID)の作り方について紹介させていただきました!

この方法を知らないと、ついつい非効率でメンテナンスのしづらい方法で連番を作成してしまいがちなID作成ですが、本ブログの記事を参考にして今後の効率化に役立ててみてください(ΦωΦ)

今後は、Spreadsheetの記事もどんどん書いていこうと思います!