MOS365の出題範囲が発表になり、Excelの科目の場合は、一番新しい関数としてはLET関数が出題されます。それ以前のSEQUENCE関数からのスピル関数もそうですが、今現在、書式のテキストでこれらの関数を紹介していないので、ネットで勉強する文化のあまりない受験者は、出題されるけども、勉強できない状況になります。
そのような事態は避けたいのですが、今すぐにそれを改善するための、書店で購入できる書籍を作るのは難しいです。
そこで、すべての受験者に対し届けるのは難しいとは思いますが、なるべく届くように無料情報として新関数の解説を公開していきます。
これらの関数は、深いところまで考えればどこまでも深く入っていきますので、MOSの出題範囲としてこのくらいが妥当だろう、というところに合わせて解説していきますので、それ以上深堀してみたいという方は、ぜひチャレンジしてみてください。
今回はその第一弾として「LET関数」を解説していきます。
LET関数とは
LET関数は、数式を簡単にする関数です。
というと何をする関数かわからないですよね。
例えば、セルA2に「A-233-BX」という文字列があって、「233」という「-」に囲まれた文字を抜き出すのはMID関数で3文字目からの3文字という指定にすれば簡単です。
=MID(A2,3,3)
しかし、A列に「A100-45-10」や「N-12897837565-Z98」のように文字の位置が全く違う場合、かなり複雑な計算式が必要になります。
はじめに「-」の位置を見つけ、それより後の文字だけ取り出します。
「-」の位置は次の計算式で求まります。
=FIND("-",A2)
また、切り出すのは指定した文字よりも後の文字数で指定するので、全体の文字数-FIND関数で見つけた値になりますが、その全体の文字数を求めるという面倒な手順が一つ必要です。全体の文字数は次の計算式です。
=LEN(A2)
これで次のRIGHT関数で、はじめの「-」以降の文字を求めることができるのです。
=RIGHT(A2,LEN(A2)-FIND("-",A2))
今度は、もう一つの「-」の位置で何とかしなければなりません。
今求めた切り出した文字列の中で「-」を探し、その切り出した文字列を文字数のところまでを切り出すために、まずは「-」の文字の位置を求めます。
=FIND("-",RIGHT(A2,LEN(A2)-FIND("-",A2)))
その文字数までの文字を切り出すために、LEFT関数を使います。
ここで、「RIGHT(A2,LEN(A2)-FIND(“-“,A2))」の計算式は、切り取られる文字列で使うのと、切り取る文字数で使うのと、2回使うことになります。
=LEFT(RIGHT(A2,LEN(A2)-FIND("-",A2)),FIND("-",RIGHT(A2,LEN(A2)-FIND("-",A2)))-1)
これでは計算式は見にくいし、計算式を作るのにも一苦労です。
では、仮に「RIGHT(A2,LEN(A2)-FIND(“-“,A2))」という計算式が「a」という文字に置き換えることができたら、計算式はどうなるでしょうか。
=LEFT(a,FIND("-",a)-1)
ものすごくシンプルになりますね。
しかし、「a」が「RIGHT(A2,LEN(A2)-FIND(“-“,A2))」であるというのはどこにも書いていないので、これでは実現できません。そこで登場するのがLET関数なのです。
LET関数の書式は、今までの関数の常識は通用しません。
=LET(変数名,代入する数式,最終的に求めたい数式)
となります。これだけ見てもLET関数ってなんだろう?と思うと思いますので、手順を追っていきたいと思います。
「変数名」ですが、「a」のことです。この変数というのは、本番の数式で使う名前で「a」ではなくても「apple」でも「Gundam」でもよいです。数字を使うとエラーになるパターンがあるくらいで自由につけてよいのです。
「代入する数式」ですが、「a」として認識させたい数式です。「RIGHT(A2,LEN(A2)-FIND(“-“,A2))」のことですね。
「最終的に求めたい数式」は変数名を使って最終的に作りたい数式です。「LEFT(a,FIND(“-“,a)-1)」にあたります。
これらを組み合わせた最終的な関数が次の通りになります。
=LET(a,RIGHT(A2,LEN(A2)-FIND("-",A2)),LEFT(a,FIND("-",a)-1))
かなりシンプルになりましたね。
このようにLET関数は、それ自体だけではなにもできない関数ですが、数式をシンプルにわかりやすくするための関数といえます。特にスピル系の関数と組み合わせるととても強力に効果を発揮します。いわば、他の関数を助けるサポート関数とでもいうのでしょうか。
LET関数は数式内で、Altキーを押したままEnterキーを押してわかりやすい位置で改行し、半角スペースでインデントをかけるような数式にしても動作するので、MOS365の試験ではご法度だと思いますが、実務では、そのようにすると美しい計算式になります。
また変数もたくさん指定できて、実はLET関数は次のような書式なのです。
=LET(変数名1,代入する数式1, 変数名2,代入する数式2, 変数名3,代入する数式3, 変数名4,代入する数式4,・・・最終的に求めたい数式)
「変数」と「変数に入れる数式」のペアを繰り返していって、最後の一つが「最終的に求めたい計算式」になるという仕組みです。MOS試験では最大3つまでは変数の設定はありあえると思っています。
最新のExcelでは「-」のような記号で挟まれた文字列を取り出すのに便利な「TEXTSPLIT関数」などが用意されています。
また、LET関数よりもさらに高度に関数を自作できる「LAMBDA関数」もあり、LET関数とLAMBDA関数どちらも使った数式では、今まで不可能だと思っていて諦めていた数式が簡単に作れるようになっています。
「TEXTSPLIT関数」も「LAMBDA関数」もMOS365では残念ながら新しすぎる関数なので出題されません。
LET関数で考えられる問題例
どうでしょうか、難しそうですか?
難しく感じたとしても、試験問題として具体的なものを見ると、意外とわかってくるかもしれませんね。
実際の試験問題がどのような文で出題されるか公開されていませんし、実際に受験して、どんな問題か分かったとしても、常識的に考えてその情報をどんな人、どんな形であれ伝えるのは不正ですので、はっきりこの問題文でというものは提示できませんが、過去のバージョンの実績のある模擬問題集は、合格者を数多く輩出しているという事実に基づけば、信頼できる内容なのでそのような問題から問題文の傾向の予測はできます。
その傾向をLET関数に当てはめた問題文が次の通りです。
- セルB1にセル範囲A1からA5までを変数aとし、合計を関数で求めてください。
これは最も単純ですね。
=LET(a,A1:A5,SUM(a))
LET関数を使わない方が早いですね。よほどの理由があってLET関数を使う、そういうシチュエーションの問題です。LET関数が使えるか
- セルC1に、検索値を変数a、列番号をbとし、セルA2に対して一覧表テーブルの2列目の値を完全一致で検索する数式を作成して下さい。
VLOOKUP関数の引数を変数にする問題で、変数を2つ使います。
=LET(a,A2,b,2,VLOOKUP(a,一覧表,b,FALSE))
これもLET関数を使わない方が手っ取り早い計算式ですね。これも単純に問題文をLET関数に変換できるかということを問う問題の可能性があります。
- セルB1に入力されている「=IF(VLOOKUP(A2,D2:E6,2,FALSE)>250,VLOOKUP(A2,D2:E6,2,FALSE),-VLOOKUP(A2,D2:E6,2,FALSE))」の計算式の重複している部分を変数aとした数式に変更してください。
実際に近いシチュエーションはMOS試験だと時間がかかりすぎるので、LET関数が使えるかだけを審査する問題が多いのではないかと予想していますが、現在実際に役立っている計算式があって、その計算式を変更するという問題なら、実務的問題としてあり得るなと予想しました。
=LET(a, VLOOKUP(A2,D2:E6,2,FALSE),IF(a>250,a,-a)
この問題の場合、攻略法を見つけていて、Excelの基本操作を間違わないスキルを持っていることを前提としますが、置換機能を使えば計算式も置き換えられるので、「VLOOKUP(A2,D2:E6,2,FALSE)」数式上で選択してコピー、そのあとセル入力をキャンセルし、ちょっと広いその数式と周辺の置換の影響を受けない空白セルなどを含んだセル範囲を選択して、置換機能で「VLOOKUP(A2,D2:E6,2,FALSE)」を「a」に置き換え、NAMEエラーになったそのセルの数式を編集し、コピーしてクリップボードに残っている「VLOOKUP(A2,D2:E6,2,FALSE)」を使って、LET関数を組み上げていきます。
試験の採点プログラムで、置換が余計な操作と判断されなければ、最も安全な解答方法です。
このように問題文には「LET関数」とは一言も出てこないでしょう。そうするとLET関数を使えばいいんだという、どの機能を使ったらいいかの判断力が審査できないからです。
では問題文の何を見ればいいのか、それは「変数」という言葉です。「変数」というのはVBAを除けばLET関数でしか使わない言葉です。そこでLET関数を使うと判断します。
実務的には、とにかく同じ計算を一つのセルの中で何回も出てくるときにLET関数を使う、と覚えておくのと、計算式をわかりやすく作る人は、同じ計算式が何度も出てこなくても、数式が複雑になりそうなら、この部分はこれを表しているというのを変数名にしてわかりやすくするためにLET関数を使うというケースもあっていいと思います。
LET関数が出題される試験
LET関数が出題されるのはMOS365ExcelExpert(上級)です。MOS365ExcelAssociate(一般)では出題範囲に入っていません。またMOS365以前のバージョンでも当然出題されません。
他にもこれからMOS以外の試験でも出題されてくるかもしれません。特に実技試験では採点しにくいので、知識試験のあるサーティファイの表計算検定は知識試験の2級あたりで一番の鬼門になってくると思います。
まとめ
今回はMOS365の出題範囲の解説の一つとして、ExcelのLET関数について解説しました。
とにかく今はMOSの新バージョンの受験者にこの情報を広めたいので、ぜひこの記事が役立った受験者の方、役立つだろうと思っていただけましたら、手軽にSNSなどでの拡散でもいいですし、この記事を印刷して次にMOS365を受験する方に渡していただいてもいいですので、ぜひ広めていただきたいと思います。
関連リンク
- MOS公式サイトのMOS365ページ
https://mos.odyssey-com.co.jp/outline/mos365.html - エクセルの神髄さまのLET関数の解説(しっかりした正しい知識の解説です)
https://excel-ubara.com/excel1/EXCEL636.html
コメント