エクセルって色々なことできますが、頭から煙が出そうになること毎日です。
ボウリングのリーグ戦でのスケジュール表(対戦表)を使って、毎回リーグ対戦を行いますよね。
その対戦表って数字の羅列になっているので、エクセルにこのように入力していませんか?
ボウリングリーグ対戦表
これは8名(チーム)の対戦表をエクセルに入力しました。
最終の8回戦目(8週目)はポジションになるので空欄にしています。
それでは、この数字のを名前に自動変換できるようにエクセル関数を使って作りましょう。
使うエクセル関数はたったの2種類なので簡単にできますよ!
基本データを作ろう
まず始めに、数字を名前に自動変換させるために、登録番号と使用するレーン番号・投球順・名前などを表にしていきます。
エクセルっぽく言うとデータベースになります。
レコードシートや成績表に自動的に反映させるために、データベースには下記項目を表にしています。
- 登録番号
- 使用レーン番号・投球順
- 会員番号
- 名前
- 性別
- AVE
- HDCP
セルA列には上記各項目を、B列~I列まで8名を順に入力しています。
使用LANEのセルB2~I2には、書式設定で0-0が入っているので、11と入力すると1-1に、21と入力すると2-2になります。
書式設定方法は、セルB2~I2を選択➡右クリック➡セルの書式設定の順に進むとこの画面です。
表示形式➡ユーザー定義で種類のところに0-0と入力すると、選択項目に表示されるようになります。
※最初から0-0はありません!
ここでは、エクセル関数はあえて使っていませんが、本来HDCPはエクセル関数を使って自動計算させる方が間違えが無いので計算式を入れて実際は使っています。
ボウリングのHDCP算出はリーグ毎にルールが異なるので、計算式は複雑になりがちですよね。
参考:HDCP算出するエクセル関数組み合わせ例
また、性別もここでは必要が無いのですが、成績表で男女別HGやHSなどを自動振り分けするので入れてあります。
参考:性別による自動振り分け方法
只今実用サンプル作成中につき近日アップ予定
エクセル関数を使った表をつくろう
次にもう一つ同じ表を準備します。
こちらの表にはエクセル関数を入れて、回戦数を入力すると自動的に対戦表から数字を探し出して名前に自動変換して表示するようにします。
セルA12~I17はデータベースのコピーをして、名前などをエクセル関数に代えています。
「#N/A」(エラー表示)が全てエクセル関数にしてあります。
エラー表示「#N/A」を空欄にして見栄え良くしたり、並び替えでは使い物にならないので空欄や0にする方法はここでは省略します。
参考:エラー表示を空欄や0に置き換えて並び替えできるようにする方法
そして、セルA10に今回の回戦数を入力するとセルB10~I10に対戦表から探し出して表示するようにエクセル関数を入れておきます。
1回戦目ならば、2行目のM~T、2回戦目ならば、3行目のM~Tというようになります。
この見つけた対戦番号(数字)をセルB10~I10に表示させます。
そうすると、セルB13~I17にデータベースから見つけて#N/Aが名前などに自動変換されて表示されます。
エクセル関数を入力しよう
それでは肝心の対戦表番号を名前に自動変換するためのエクセル関数を設定しましょう。
まず最初に、回戦数を「セルA10」入力すると対戦表から見つけ出して表示させる「セルB10~I10」にエクセル関数を入れます。
数字を見つけたら横方向に探すVLOOKUP関数です
「VLOOKUP関数」は一般的によく使われていて、セルB10にはこのような数式となっています。
「=VLOOKUP(」って入力すると、このように表示されませんか?
=VLOOKUP(検査値、範囲、列番号、[検索方法])
検査値とは、セルA10の回戦数で、表示したい回戦数って書いた方が分かりやすいかな?
範囲とは、セルL2~T9の対戦表全体から探す範囲です。
列番号とは、探したい回戦数と一致した数字を見つけたら何列目の数字を選択するかで、セルB10は見つけた数字の列が1列目とすると、右1列となりなので1+1=2ということで2列目になります。
検索方法とは、完全一致か部分一致なのかなので、ここでは数字が完全一致ではなくてはいけないので、0を入れますが、省略すると部分一致になります。
次に、セルC10には、検査値は同じなのでA10、範囲も同じなのでL2:T9、列番号は2つ右なので3、検索方法も完全一致の0で完成します。
=VLOOKUP(A10,L2:T9,3,0)
これを繰り返しD10、E10、F10、G10、H10、I10、と列番号だけ変えれば完成します。
変更するのは列番号だけなので簡単ですね。
にこのままコピーすると・・
=VLOOKUP(A10,L2:T9,2,0)が=VLOOKUP(B10,M2:U9,2,0)と列全体が右にずれてしまいます。
セルを固定する「絶対参照」にする$マークをつけるだけなんですよ!
詳しい説明は後日書きます。
と、言う訳で以下からは実際の数式(絶対参照)してある数式を書いていきます。
これでセルA10の回戦数を入力すると、対戦表から数字が自動的に読み込むようになりましたね。
次は、名前などが自動変換されるようにエクセル関数を入れていきましょう。
2回戦目のセルB10は登録番号「7」になっていますので、7はデータベースでは六町さんです。
ということで、対戦表から見つけた数字から、名前などをデータベースから見つけ出すエクセル関数を使えば、会員番号~HDCPまでの5項目が自動変換できるようになります。
エクセル関数HLOOKUPの登場です。
さっきまでは横方向に探すのでVLOOKUP関数を使いましたが、今度はデータベースの一番上の数字から縦方向に探すのでHLOOKUP関数を使います。
探す方向が横か縦の違いなので、使い方は一緒なので簡単です。
セルB10は番号「7」セルB13には会員番号を入れたいので、HLOOKUP関数は・・・
=VLOOKUP(検査値、範囲、行番号、[検索方法])
検査値はセルB13、範囲はデータベースB1~I7、行番号は3列目、完全一致
おや?今度は4列目じゃないんだって思いませんか?
最初はこの違いに惑わされましたね。
これで、セルB13にはセルB10の数字によって自動的にデータベースから会員番号を見つけて自動変換されるようになります。
では、隣のセルC13の設定は、検査値をセルC10に変えるだけで、残りも同じ方法で会員番号は全員分完成します。
次に名前の設定をします
先ほどの会員番号のHLOOKUP関数の設定と検査値・範囲・検索方法は一緒で、違いは列番号のみで、3列目の会員番号が4列目の名前になるだけなので、列番号「3」を「4」に変更するだけで完成します。
セルB14の名前にはこのようになります。
この作業を繰り返していくと・・・
性別は列番号「5」、AVEは列番号「6」、HDCPは列番号「7」です。
この出来上がった自動変換ごの各セルをレコードシートにリンクすれば、わざわざ書かなくても回線数のみの入力でレコードシートも完成するので、作業効率化と時間短縮になりますよね。
参考:実用例
[temp id=19]