以前、データの取得を「相対パスに変えてみた」という記事を書きました。
「やり方は分かったけど、どういう理屈かわからない」という方のために、今回はどんな考え方で理解すればいいのかについて書いていこうと思います。
結論から言うと、相対パスというのは中学校で習った数学が分かっていれば簡単なんです。
「一次関数」これを理解できていれば、相対パスも簡単に理解できます。(断言)
それとどう関係するの?
この考え方を知っておくと、パワークエリを使いこなすだけでなく、VBAの理解もより一層進みますよ。
Contents
【おさらい】「相対パス」について


パワークエリを組み込んだエクセルファイルを他人に渡すとデータ取得ができなくなるという欠陥がありました。
そこで、相対パスにすることで、取得データのファイルパスを自動更新できるようにしよう、というのが相対パスでした。
では実際どのようにやってたのか、それがこちらです。
パワークエリの詳細エディターから、相対パスにしている構文を抜粋するとこうでしたね。
filepath = Excel.CurrentWorkbook(){[Name=”テーブル5″]}[Content]{0}[列1],
ソース = Csv.Document(File.Contents(filepath&“TB.txt”),[Delimiter=” “, ・・・(以下略) ],
ちなみに、法人番号検索ツールでAPI連携するためのリクエストURLも、同じ方法でURLを指定していました。
apiurl = Excel.CurrentWorkbook(){[Name=”リクエストURL”]}[Content]{0}[リクエストURL],
ソース = Xml.Tables(Web.Contents( apiurl )),
こんな感じです。どちらもソースデータを指定する前にファイルパスもしくはURLを指定するように構文が追加されています。
では、これが一次関数とどうつながるのか、まずは一次関数について見ていきましょう。
【おさらい】「一次関数」について
一次関数の問題を解いてみましょう。


では解いてみてください。
・
・
・
・
・
・
できましたか?次に解答編です。
解答、簡単ですよね。


この問題自体は何も難しくありません。では、何が大事なのか。
大事なことは、通話料金(y)と通話時間(x)の関係です。
通話時間が30分の時、45分の時で通話料金は変わりますよね。
つまり、通話時間によって通話料金が変わるということです。
それを数式で示したのが(3)の問だったわけです。
この当たり前のことが大事なんです。
一次関数をまとめると
ここで伝えたいことはたったひとつ。
「通話料金は通話時間によって決まる」と言うことです。
これをxとyの関係で表現すると、「yはxによって決まる」 です。
- yとxは、xによってyが決まる関係である。
これが、大事なことなんです。(再)
これを踏まえて相対パスとの関係を見ていきましょう。
「相対パス」と「一次関数」の関係について
一次関数はこのような考え方でした。
ある任意の値をxに代入してyを求めます。


では相対パスはどうでしょうか。


データ取得するときのファイルパスの箇所に、テーブル5のセルにあるデータを代入して、ファイルパスを完成させているのです。
ここでは「filepath」というのがxに、「ソース」がyに当たるわけです。
filepath(x)にテーブル5にあるファイルパス(詳細は省略)を代入してデータ取得のソース(y)とする。
まさに一次関数と同じですよね。
例題では数字だったものが、ここでは文字(ファイルパス)に置き換わっただけなのです。
ちなみにこのファイルパスの取得の流れを追いかけていくと、こんな感じです。


データを取得するまでに3段階あることが分かります。
このような感じで、代入を繰り返すことで取得データのファイルパスを自動的に変える仕組みを作っています。
ちなみに法人番号検索ツールのリクエストURL送信からデータ取得も同じ仕組みです。


これも、ソース(y)のURL(x)に、リクエストURLテーブルにあるURLを代入して取得データのソース(y)としています。
このように、まずxを定義して代入することでyを求めるというのは、一次関数も相対パスも同じなのです。
最後に、覚えておいてほしいこと
いかがだったでしょうか。
相対パスと一次関数を同じ考え方で整理すると分かりやすいということを書いてみました。。
今日覚えてほしいことはたった一つ、これです。
「xに好きな値を代入してyを出す」のパワークエリ版が「相対パス」
これが理解できるとプログラミングの世界でもきっと強くなれるので、ぜひマスターしてくださいね!








こちらもぽちっとお願いします!