会計ソフトの推移表から、任意の列の数字を取り出す事例として、VLOOKUP関数 と XLOOKUP関数を比較してみました。
※XLOOKUPの事例 by Leica M10
VLOOKUP関数とXLOOKUP関数
Excelに出した会計ソフトからの推移表で、
たとえば4月の数字を表示したいとします。
売上高、経常利益、現金・預金合計だけを取り出したいというケースです。
この場合 VLOOKUP 関数を使うなら、次のように入力すれば
A2の「売上高」に一致するものを推移表から探して取り出せるのです。
しくみとしてはA2の「売上高」を推移表の A から M の一番左から探して、見つかったら2列目つまり4月の数字を取り出すというもので、完全一致のものを取り出すのであれば、FALSEを入れます。
この場合は、完全に一致したものを取り出したいのでFALSEです。
一方、新関数である XLOOKUP関数を使うともっとシンプルにできます。
XLOOKUP 関数については、お使いのExcel で使えない場合もありますので、こちらの記事を参考にしていただければ。
(Office2019、Microsoft365(旧Office365)なら使えます)
VLOOKUP関数を使ってはいけない。よりシンプルなXLOOKUP関数を使う。 | EX-IT
XLOOKUP関数とスピル。#N/A、#SPILL! エラーの解決方法。 | EX-IT
XLOOKUP 関数なら、次のように入れます。
売上高を推移表の A列から探して見つかったら B 列を表示というものです 。
XLOOKUP 関数の場合は何も設定しなければ、標準設定で完全一致のものを探しますので、これ以外は省略できます。
VLOOKUP 関数よりもシンプルなのです。
これらの事例では4月の数値を取り出しましたが、これが5月、6月、7月……となるとどうすればいいか。
その対応策についてまとめてみました。
VLOOKUP関数で推移表から取り出す
VLOOKUP 関数では、4月を取り出す場合、次のように入力しますので、何列目を取り出すかという2の部分を変えれば、5月、6月、7月……と変わっても対応できます 。
1つの方法としては、たとえば適当な場所=セル C1に、2を入れて、それを数式で読み取るというものです。
4月だったら2、5月だったら3、6月だったら4と変えていけば読み取る場所を変えることができます。
もしプリントアウトするのであれば、この セルC1は範囲外に置いておけば問題ありません。
または別シートにおいてもいいでしょう。
しかしながらこの数字を毎月入力する手間も惜しみたいもの。
さらにはミスの可能性があるので、こういった方法は避けたいものです。
「2020年4月」から、MONTH関数で4という数字を取り出し、その4を2にするためにはどうすればいいかを考えます。
4から2を引けば2、5から2を引けば3、6から2を引けば4となり、2、3、4と数字を変えていくことができるわけです。
VLOOKUP 関数を次のように変えれば、セルB1の年月を変えるだけで、取り出す数値も変わります。
さらに、この場合は4月、5月、6月……翌年3月まで続く3月決算の事例にしていますので、12月まではこの数式でいいのですが、1月、2月、3月は、「2を引いて」という風には計算できません。
たとえば1月であれば11列目を表示するので、1+10、2月であれば12列目なので2+10と計算します。
IF で、「もし3より大きかったら2引いて、そうじゃなかったら10を足す」というように変えて対応しましょう。
さらに工夫すればそれすらも自動化できますが。
(私は自動化しています)
XLOOKUP関数で推移表から取り出す
一方 XLOOKUP 関数で任意の数字を取り出すときにどうするか。
XLOOKUP 関数の式を見ると、列を指定しているところは「推移表!B:B」 というところです
これを VLOOKUP 関数のように1つずつずらしていくというのは、そうかんたんではありません。
BをC、D、E ……と変えたいわけです。
XLOOKUP関数とOFFSET関数を使う方法
この場合、OFFSET関数を使う方法があります。
OFFSET関数は、=OFFSET(〇、△、□)で、〇を行(下)へ△、列(右)へ□ずらして表示するもの。
=XLOOKUP(A2,推移表!A:A,推移表!B:B)
4月を指定すると、行も列も0、つまりずらさないので、このように表現します。
月だと列(右)へ1つ移動するので、
=OFFSET(XLOOKUP(A2,推移表!A:A,推移表!B:B),0,1)
です。
これを「2020年4月」からMONTH関数で取り出すと、4から4を引くと0になるので、次のような数式になります。
さらに、条件によってわけるので、こうしましょう。
※追記:XLOOKUPで該当するものが見つからない場合があるなら、IFERRORでエラー処理が必要です。
XLOOKUP関数とINDEX関数を使う方法
一方 XLOOKUP 関数は、次のように、4月から3月まで(BからM)と指定することもできます。
この場合は Excel のスピルという機能も使いつつ 、B から M つまり4月から3月までのデータをいっぺんに表示できるのです。
これはこれで便利なのですが、今は4月分だけを出せばいいので、このうち、4月分だけを表示するという数式に変えてみましょう。
ここでは INDEX関数と組み合わせます。
BからMで、一括して読み取ったものの中から1番目、つまり1と指定すれば4月分が表示できるのです。
では、この1というものを「2020年4月」からMONTH関数で取り出した4を使って表現すると、4から3を引いて1になるので、MONTH(B1)-3という指定をすれば取り出せるわけです。
3より大きいかどうかで、場合分けをすると次のようになります。
1月だと11列目なので10を足すのです。
OFFSETとINDEXは、どっちもどっちですが、スピル(すべてを一括で表示する)を使うことを考えると、INDEXで使えるようになっておいたほうがいいかなと。
(INDEXのほうがプログラミング的な要素が大きいので私は好きです)
※追記:XLOOKUPで該当するものが見つからない場合があるなら、IFERRORでエラー処理が必要です。
XLOOKUP関数は、VLOOKUP関数は、この事例だとVLOOKUP関数のほうがやりやすいかもしれませんが、XLOOKUP関数自体はシンプルで、使いやすいので、こういった事例の時は、OFFSETやINDEXを使ってみていただければ。
■編集後記
昨日は、税理士業中心に。
仕事後、サザビー(MG 1/100)が完成。
圧巻のボリュームでした。
次は、百式。
母からLINEがあり、「娘日記ないんやね」と。
ん?と思って見返してみると、おとといの記事、編集後記以下が入っていませんでした。
多めに書いた編集後記のときに限って……。
追加しました。
(記事は興味ない方多いかと思いますが)
Leica M10 おすすめアクセサリ。持ち運び・電源・撮影
■「1日1新」
MG サザビー 完成
娘と新しい遊び
生協 ポップコーン
■娘(3歳2ヶ月)日記
散歩に行っている穴場の場所で、ボールを転がしたいと(坂になっています)。
行ってみて転がしてみると思うように転がりません。
傾斜がそれほどなく、すべらないようにもなっていて。
その場でも落ち込み、帰宅してからも「あんまり転がらなかった……」とごろごろしながら言ってました。
明日は丘のようなところに連れて行ってみようかなと。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方