【メモ】Excelの入力規則(リスト)における、構造化参照

やりたい事

入力規則としてリストを設定し、そのリストは動的変化に自動対応させたい。

テーブルと名前定義の二重構造

リストにしたい範囲をテーブル(ListObjectオブジェクト)として定義する。

そのまま構造化参照、たとえば=テーブル1[列1]などとするとエラーが出るので、列のデータ範囲(ListColumnオブジェクトのDataBodyRangeプロパティの部分)に名前をつけておき、それをリストに設定する。

たとえば、テーブルの列データ範囲をリストとしたい場合。

  • リストにしたい範囲が列として含まれるテーブル:テーブル1と定義
  • 列の見出し以外の範囲に名前をつける:リストと定義
  • 入力規則に設定する:=リスト

INDIRECT 関数を使って構造化参照

前述の方法は、やり方が簡単で、入力規則の定義も簡潔ではあるが、列のデータ範囲に被せるように名前をつけるという点で、冗長。

こちらは、リスト定義において、INDIRECT関数を用いて、構造化参照する。

前節と同様にテーブルを作り

  • テーブル名:テーブル1
  • 列見出し:列1

とする(デフォルトの名前)。そのまま入力規則で、=テーブル1[列1]とするとエラーが発生する。

なので、INDIRECT関数を用い、=INDIRECT(“テーブル1[列1]”)とする。そうすると成功となる。

このままだと、列名が変更された場合、柔軟に対応出来ない(文字列を直接指定しているから)。

そこで、リストにしたいテーブルを、1列で構成する。
その上で、入力規則設定を、=INDIRECT(“テーブル1[#データ]”)とすれば、列見出しが変更されても影響が無い。
この設定であれば、セル参照を用いていないため、テーブルを別シートに移動しても破綻しない。

[#データ]の部分は項目指定子。[#すべて]とすると、列見出しそのものがリストに属してしまうため、気をつける。

リストは一次元配列で成るから、上記設定のまま、テーブルの列数を増やすと、リストが崩れてしまう。また、列を増やした状態で、そのまま同じ入力規則を設定すると、エラーが発生する。

比較

そもそも入力規則に適用するリストであるから、1列の範囲で定義するのが良いと思う。テーブルと名前定義の方法(最初のほう)なら、2列以上のテーブルのそれぞれの列をリストに設定出来るが、リストの要素数がテーブルの行数と同じになるため、リストの要素も同数で無ければ上手くいかない。つまり、要素が少ないほうの列をリストにすると、そのリストに空白要素が入る。と言って、少ないほうの列の、データがある部分の範囲だけに名前をつけると、今度はリストが動的にならない。

INDIRECT を使用する方法は汎用的だが、名前定義のほうが簡便。また、名前定義のほうは、テーブルの名前を変更しても破綻しない。INDIRECT は、文字列を直接指定するから、そこを変更する必要がある。尤も、テーブル名やフィールド名をコロコロ換えるような運用をするな、という話ではある。

「ニセ科学批判=リフレ信者=カルト信者」と言った人の、思い込みの記録

あまりにも、なので。

こうすれば沢山見られる↓

twilog.org

こういう事を言ってきた人が、今更何をどう取り繕っても、白々しく悍ましいとしか言いようが無い。

全体ではありません。その認識は無論できてますが、ニセ科学批判が全部リフレ支持でニセ経済学流布貢献者だとは、思っちゃいませんよ。などと主張しているが、ならばたとえば、

mika_berry on Twitter: "ついでにいうと、ニセ科学批判=リフレ信者=カルト信者 https://t.co/Hmrti3cSYu"

ここでのニセ科学批判=リフレ信者=カルト信者という表現は何なのだ、という話になる。この等号は厳密な数学的用法では無い、と言っても無理な話である。その事自体は解っている。それら集合のほぼ全体が重なり合っている、という主張である事に変わりはない。
あるいは、最初の等号は、集合論の∩のような意味合いかも知れないが、それでも同じ事である。今までそんな粗雑な記号の使い方をしてきたのか、となるし、もし仮に、(ニセ科学批判∩リフレ信者)とカルト信者は大体重なっているのような主張がしたかったのだとしても(⊂でも無い)、そもそも大体重なっているという言明が特に論証されたものでは無い。

何らかの属性を持った集団が、他の属性を持った集団と多く重なり合っている、というのは、それ自体が社会科学的な主張であり、社会学(社会調査論など)や社会心理学の対象とされるような、実証科学的問題である。であれば、そう主張する証拠は何かと問われるのは当然と言える。もし無いのなら、証拠も無しに、他者の属性に関していい加減な主張をし続けてきたのか、となるし、あるいは、別にtwitter上の発言であり、厳密に論証された事では無い、と言うのであれば、そのような軽さと粗雑さで、他者の思想や属性に関わる部分について評価・発言をしてきたのかと看做されるだろう。

ちなみに、ここまで書いた事は、私が以前に、菊池誠氏を批判した時と、構造的に同様である。

interdisciplinary.hateblo.jp

補足

念のために補足しておきますが。

私は、ニセ科学というものに関心を持っており、批判をしてきましたが、リフレの支持者ではありません。

ここで、支持者で無いというのは、反対者と同等ではありません。経済方面への関心が薄く知識に疎いので、それがどういうものか良く知らないから、支持も不支持も無い、という意味合いです。よく知らない事について、大体重なっている、というように言われても、何を言っているのか、としかなりません。

リフレが何かも知らないのか、社会人として知っていて当然の知識だろう、というような批判があれば、それはそうなのかも知れません。私にとって、何か学問的知識を得るというのは、関連する分野の教科書を何冊も読んで認識を構築していく作業なので、それなりのリソースを割かねばなりません。今は主に疫学や統計の勉強をしていますので、そちらが優先です。
自分は政治や経済について大した知識を持ち合わせていないので、こういう場で語る事はしない、というのは何回か言ってきましたし、知らない事については意見するのを控えるのが良いと考えています。そういう理由で、私は、経済関連の話を ほぼ書いた事はありません。