ProgramExcel,Google スプレッドシート

Excelやスプレッドシートで特定の値をキーにしてデータを抽出する方法として vlookup 関数が有名ですが、vlookup関数の一番の弱点は
「検索キーのリストが一番左側にないとダメ」
ってところです。

vlookup / hlookup 関数の後継関数として xlookup 関数が発表されていますが、現状使える環境はごく一部のテストユーザー向けです。

Microsoft、新しいExcel関数「XLOOKUP」を発表 ~「VLOOKUP」や「HLOOKUP」の後継 – 窓の杜

既存関数の index 関数 と match 関数 でvlookup 関数の弱点を克服した使い方ができますので、覚えておいて損はないと思います。

index / match 関数によるデータ抽出

結論から先に 使い方は

=index("[抽出したいデータの範囲]", match("[検索キー]", "[キーを検索する範囲]", 0))

です。

それぞれの関数の詳細な説明は省きますが、match関数で、検索キーがある行番号を取得して、index関数で取得した行番号に対応するデータを返すといった動きになります。

vloock関数のように、検索キーの場所を選ばないし、取得する列の順番を数える必要もありません。

抽出したいデータ範囲とキーを検索する範囲をそれぞれ名前を付けて、それ上部の式に当てはめればサクっとデータ抽出ができると思います。

Google / Android,Microsoft Windows,ProgramExcel,Google スプレッドシート

エクセル等でデータ編集等をする時に、一つ上のセルの値を参照することは多々あります。
ただ、イコールで値を参照した際には途中で行の挿入・削除を行うと参照元がずれて大変なことになります。

挿入・削除に影響されない、常に一つ上のセルの値を取得するメモ

=INDIRECT(ADDRESS(ROW()-1,COLUMN()))

ExcelやGoogle スプレッドシートでも動作します。

Google / Android,ProgramGoogle スプレッドシート,Google関係


スプレッドシートの関数で引数の文字列にダブルクォーテーション(“)を使いたい場合のメモ。

文字列括りはダブルクォーテーションのみ

他プログラム言語ではシングルクォーテーションも文字列のくくり文字として使えるケースがありますが、Googleスプレッドシートでは使えません。

またバックスラッシュや、二回続けて入力する等のエスケープ方法も使えません。

ダブルクォーテーションを出力する関数

直接ダブルクォーテーションが入力できないのであれば、ダブルクォーテーションを出力する関数を使えばOKです。

ユニコード表に従って、数値を文字に変換する CHAR() 関数が使えます。
ダブルクォーテーションを出力するには「 CHAR(34) 」です。

そのほかの引数の数字と出力される文字の対応は下記サイトで確認できます。
[ Using the CHAR Function in a Google Docs™ Online Spreadsheet – aubrett.com ]

文字列連結関数 Concatenate を使う

文字列の連結には「&」を使った連結もできますが、個人的には連結関数の Concatenate 関数を使うほうがわかりやすい。
ネックは Concatenate って関数名が長いくらいw

exp)セルA1に入っているHTMLデータの中から正規表現を使ってAタグので指定されているURLを取得する

=regexextract(A1,concatenate("<a href=",char(34),"(.*?)",char(34),".*?>"))



参考サイト
[ GoogleスプレッドシートのCONCATENATEでダブルクォーテーションを使う – dackdive’s blog ]