« Excel で簡単に範囲選択するやり方 | トップページ | Excel でフォルダを作る。 »

INDEX 関数の速さは、VLOOKUP 関数の約110倍

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2013 Home & Business)

K.Y さん。

このあいだ送った Excel のファイルで、「VLOOKUP 関数ではなくて、INDEX 関数なのはどうしてか」、「VLOOKUP 関数ではいけないのか」という件ですが、あの場合は、INDEX 関数でも VLOOKUP 関数でもどちらを使っても問題ないです。

どちらでもよかったのですが、一応、基本というか、定石というか、セオリー通りというか、原則というかで、INDEX 関数を使ってあります。

値を表引きしてくる速度は、VLOOKUP 関数よりも IDEX 関数のほうが速いんです。その速さはタイトルにある通り。

とはいえ、あの例では値を引っ張ってくる元になっているデータは、最大でも19件(行)しかありません。
19件程度では、人間が知覚できるような差は生じないので、どちらでもいいというわけです。

データの件数が大量になってくると、答えが出るまでの時間が違ってきます。
大量というのがどのくらいかというと、手元で試してみたら、9,000件超えてきたら見た目に「あれ?」と気づくぐらいの違いが出てきます。

1,000や2,000では、たいした差がありませんでした。

思い切って50万件で試してみました。
(時間がかかるだろうなと思っていたので昼飯を食べながら……)
試しに使った PC は以下のような機種です。
■計測に使ったPC
Windows 10 Pro 64bit
Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
メモリ4GB

試したやり方は以下のようです。
■INDEX 関数
A列とC列にあらかじめ 1 から 500,000 までを連番・昇順で入力。
セル D1 に INDEX 関数を使った次の数式を入力。

=INDEX($A1$:$A$500000,C1,1)

D1 のフィルハンドルをダブルクリックすることで、数式を D500000 までコピーし、すべてのセルに答えが表示されるまでの時間を計測。

約7秒。

■VLOOKUP 関数
A列、B列、D列にあらかじめ 1 から 500,000 までを連番・昇順で入力。
セル E1 に VLOOKUP 関数を使った次の数式を入力。

=VLOOKUP(D1,$A1$:$B$500000,2,FALSE)

E1 のフィルハンドルをダブルクリックすることで、数式を E500000 までコピーし、すべてのセルに答えが表示されるまでの時間を計測。

約13分。(約780秒)

INDEX 関数のほうが約110倍速いでしょ?
でもまあ、我々の日々の仕事でそんな大量のデータを扱うかというと――ないでしょうね。

というわけで、範囲の左端を目印にできるなら VLOOKUP 関数が使える。左端を目印にできないなら、INDEX 関数が使える。
このぐらいの認識でいいと思います。
(たまに勘違いして、 VLOOKUP 関数を使うときに、表の左端の列しか指定できないと思っている人がいますが、そんなことありません。選択した範囲の左端です。4列目から6列目まで選択したら、4列目が左端になります。)

ちなみに、1 から 500,000 まで連番で入れるやり方ですが、A1 に 1 を入れて、 A2 に 2 を入れて両方を選択してず~~っと下へ引っ張る――1分やってみました。5622までいきました――って、そんなやり方ではかなり暇がないとできないですよね。

「フィル」という機能の「連続データの作成」が便利です。

1.セル A1 に 1 を入力して選択しておく。

2.「ホーム」タブ-「編集」グループ-「フィル」-「連続データの作成」を選択。

Fill

3.「範囲」で「列」をクリック。

4.「種類」が「加算」になっていることを確認。

5.「増分値」には 1 を、「停止値」に 500000 を入れて、OK をクリック。

Renzokudata_2

これでA列に 1 から 500000 までの連番ができます。

|

« Excel で簡単に範囲選択するやり方 | トップページ | Excel でフォルダを作る。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/6730/65936014

この記事へのトラックバック一覧です: INDEX 関数の速さは、VLOOKUP 関数の約110倍:

« Excel で簡単に範囲選択するやり方 | トップページ | Excel でフォルダを作る。 »