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 までの連番ができます。

| | コメント (0) | トラックバック (0)

Excel で簡単に範囲選択するやり方

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

K.Y さん。

Excel で表を選択する場合のやり方です。

いろいろあるでしょう( VBA で Range("C1:C10").Select  とか書いて実行するのも「選択」ですしね。)けど、「簡単に」ということだったので、次の2つはどうでしょうか。

■ショートカットを使う。

Ctrl + Shift + : (コロン)

隣接しているセルを一括で選択するショートカット。

表全体を選択したいといった場合に便利。
さきに表のなかのセルをどこでもいいので選択しておいてからショートカットを実行。

■「名前ボックス」を使う。

数式バーの左側にある「名前ボックス」に、セル参照を入力。
離れたセルも指定できる。
(画像の出典:Excel ヘルプ)

名前ボックスの1

・名前ボックスに入力するセル参照の書き方例
(入力時は a1 のように小文字で入力してよい。)
C5 → セル C5 を選択
A1:D11 → A1 から D11 までを選択
B2,C5,E9 → B2 と C5 と E9 を選択

上記を組み合わせた書き方もできる。
A1,B3:B10,F15 → A1 と B3からB10 、F15 を選択

まとめると、

名前ボックスの2

| | コメント (0) | トラックバック (0)

「完成車検査」は本当に必須なの?

無資格の従業員に「完成車検査」をさせていたことが判明した日産自動車。

完成車検査とは、新車を出荷する前に行う最終のチェックのことで、道路運送車両法などに基づいて各社が認定した「検査員」が実施するのだとか。

日産では資格をもたない人による検査が状態化していたらしく、しかも偽装のためのハンコを貸し出すなどしていて、どうも組織ぐるみでやってましたよ感がありありらしい。

でも! だ。

自動車が世に普及し始めた時代ならともかく、技術がはるかに向上し、「うちの社が作る自動車の安全性には絶対の自信がある」といった状態でいつでも、どこでも生産が可能な時代になってくると、完成車検査というものを国が定めることに、はたして意味があるのか? という気は僕にはする。

西川社長が会見で言っていた言葉――「検査そのものは確実に行われており、安心・安全に使っていただける」――つまり、「無資格の人が完成車査をしていた」という手順の問題であって、検査の時点では完成している車両の品質がなんら汚されるものではないということだ。

社長の言葉をそのまま信じればということだけど。僕は信じたい。

「こんな検査の手順を経なくても品質には何にも問題がない」とわかりきっている状態の車両の完成車検査を、法に定められているからといってやり続けなければいけないとなると、どこかで「この手順は誰がやっても何の影響もないだろう」と考え始める――気持ちとしては理解できる。

それだけコストがかかり、かかったコストは消費者の購入額として返ってくるのだし。
より良い製品をより安価にと考えるなら、不要な手順は省きたいと思うのがまっとうな経営というものだろう。
(国の委託を受けているなら委託費が出てるだろうけどねえ。コストが回収できてかつ潤沢な利益になるような額ではないだろうなあ……)

日産がそう考えているという話ではない。そう考えた人たちがいても、そのことを心情として僕は理解できるという話。

だからといって世間からは「いいんじゃないの」とすませてもらえないだろうけど、国が法として定めている内容が、時代に合わなくなっているのではないかという振り返りを、国と企業が肩を組みあって行う必要がある気がする。

たとえば、車検だ。

それこそ大昔なら国が介入して自動車の安全性を維持・向上させようとする仕組みとして意味があったと思う。

でも、技術革新が進んできたこの時代に、数年ごとの車検なんて不要なんじゃないか? と思うことは僕にはある。
運転者が気づいていないうちにどこかが緩んでいて危険な状態に――とかあるといえばあるだろうから、まったく車検は無しというのは難しいかもしれないけれど、3年とか2年ごとというのは期間が短すぎだろうと思うのだけど。

今の時代の自動車はそんな間隔で点検しなければならないような品質ではないだろうに。
(とはいえ、車検はもう経済の仕組みの一つとして長い年月が経ってるから、いまさら止めるとか期間を延ばすとなると、整備工場の死活問題になってくる。難しいところだ。)

完成車検査も実態はそんな感じになってたんじゃないのかなあ。ひょっとしてだけどね。

「完成車検査なんて、無くせばいいんだよ。あれを無くしてどうにかなるような車を作っているメーカーなんて、いまどきいないよ!」と、自動車業界の人たちがあちこちで言っているような気が僕にはする。

| | コメント (0) | トラックバック (0)

Excel のセルに表示された数式を計算結果に変える。

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

表示形式が「文字列」になっているセルに数式を入力すると、数式がそのまま表示される。

計算結果を表示するには、 = を = で置換する。

■ = を = で置換する。

  1. 数式が表示されているセルを選択して表示形式を「標準」に変更する。
  2. 「検索と置換」ダイアログボックスを呼び出す。( Ctrl + H )
  3. 「検索する文字列」の欄に  = を入力。
  4. 「置換後の文字列」の欄に同じく = を入力。
  5. 「すべて置換」ボタンをクリック
    数式の表示が消えて、計算結果が表示される。

数式が表示されているセルの個数が少なければ、表示形式を「標準」にしてから、F2 かダブルクリックで編集モードにして Enter を押すやり方もある。

もし、数式が表示されているセルを選択して、参照元(セル内の数式によって参照されているセル)に色がついたら「数式の表示」がオンになっている。
「数式」タブ-「ワークシート分析」グループ-「数式の表示」をクリックすると、計算結果が表示される。

| | コメント (0) | トラックバック (0)

肉眼より美しいのはやめて。

スマートフォンやデジタルカメラで撮影した風景が、美し過ぎる。

某メーカーのもので、会社の近くを流れている川を撮ったのだとか――。なんじゃこりゃ!? の美しさだった。

ちょっと段差があって、上流からの流れがそこで少し落ちている。
その落ちたあたりの水面に立つ泡の細かい様子がなんと綺麗に写っていることか。

どこの「日本清流百選」だ? というぐらいの印象。

気になるのは、肉眼で見たときとの差だ。
肉眼で見るとそんなに美しく見えない。そこにあるのは、地方の中小企業の敷地の前を流れている小さな川。

いいのか? 実際に見たよりも美しいって……。

「○○へ行ってきたんだ。ほら」

「ウワー。きれいだねえ」

「へへへ。そうでしょう」

「僕も来週行ってみるよ」

「ぜひぜひ」

来週――「なんか違う……」――なんてことになるだろうが!

人生、それでいいのか!? いいんだろうなあ。時代の変遷というものか……。

| | コメント (0) | トラックバック (0)

«三津谷寛治氏に叱られるぞ。