コールスロー

世界というジグソーパズルの1ピース

Excelのセル範囲に名前をつけて計算をシンプルにする。ついでに最新Excelのスピル機能におどろく。

ある日

しいたけさんのあるブログ記事がはてなブックマークホッテントリに上がってたので見にいきました。
で、話題になっているエントリとは関係なく過去記事にあったExcel関連の投稿が面白そうだったので、わたしならこうするよ、という一例を。

元記事

www.watto.nagoya
Excel使ってて「F4」って押したことないなあ。絶対参照使うときには直打ちでした。

わたしが九九の表を作るなら

こんな感じでやります。

開始ポイント

行と列の数値は入れてあります。一応「意地でも手数を減らしてやる!」ということで、行は列をコピーして「行と列の入れかえ」で貼りつけました。

f:id:Akimbo:20200627025831p:plain
初期状態(行と列の数値は入れてあります)

列に名前をつけます

セル範囲B1:J1を選択し、名前ボックスをクリックして「列」と入力、Enterを押します。

f:id:Akimbo:20200627030003p:plain
列に「列」と名前をつけます

行に名前をつけます

セル範囲A2:A10を選択し、名前ボックスをクリックして「行」と入力、Enterを押します。

f:id:Akimbo:20200627030213p:plain
行に「行」と名前をつけます

名前「行」と「列」が作成された状態

名前ボックスのプルダウンをクリックすると、定義された名前が見られます。

f:id:Akimbo:20200627030341p:plain
「行」と「列」、2つの名前が作成されています。
ここでいずれかの名前をクリックすると、名づけられた領域が選択されます。

セルB2に数式を入力

セルB2をクリックして、「=行*列」と入力します。もちろん「=列*行」でもOKです。かけ算の順序につ(以下略)。
数式内で参照されている名前の示す範囲が色わけでハイライトされます。

f:id:Akimbo:20200627030712p:plain
数式の入力(行*列)
これはEnterを押す前の状態です。

Enterを押すと、表が完成する

ホントにEnterを押すだけで9*9=81セルが埋まります。Excel2019から搭載されたスピルという機能らしいです。

f:id:Akimbo:20200627031040p:plain
1つのセルに入力しただけでスピル機能が勝手に表を作ってくれる
と、こんな感じでいつも名前をつけて解決しているので、F4を何回も押す、という操作はやったことがないんですよね。

この方法のメリット

  • 数式を見れば、なにやってるか一目でわかる。特に計算式の意図がわかるのは大きいと思います。
  • セルの参照(絶対/相対)で悩まなくていい。ズレたりもしない。

この方法のデメリット

  • 初心者が初めて見たときにはなにやってるか皆目わからない。
  • 「前の行の値に1を足す」ような相対参照の計算が難しい(書けないわけではないが、素直に相対参照使おうよ、というレベル)。
  • 名前の定義を間違うと、どこが間違ってるかを探すのに手間取ることがある。