スプレッドシートの固定が分かりにくい!? 簡単にセルを固定する方法

目安時間 15分

 

スプレッドシートの固定というと、スプレッドシートに沢山データが広範囲に渡って入力されているときに特定部分のセルを固定する事で、見出しとなる行やセルの一部を常に表示しておくことで何のデータを表しているのか分かるようにする機能の事です。

 

エクセルの場合のセルの固定方法は直感でわかりやすいのに、Googleスプレッドシート(以下スプレッドシート)の固定のやり方はチョット分かりにくいと感じるのは私だけでしょうか?

 

なぜか分かりにくい!?

 

なぜ分かりにくいのかについて少し考えてみました。

 

エクセルとのメニューの比較

 

 

エクセルの場合は:メニューで表示>ウインドウ枠の固定 の3つから選びますね。

 

固定するセルをアクティブにしてそのセルの上側及び左側を固定する事になります。

 

 

 

 

スプレッドシートの場合は:メニューの表示>固定 の8つから選びます。

 

 

「行なし」、「列なし」というチョット分かりづらい表現がありますが、これは固定解除の時に選ぶものになります。

 

1行、2行、1列、2列とはアクティブにしたセルの位置とは無関係で、行の場合は1つ目のセルの下か2つ目のセルの下かという事で、列も同じ様にセルの1つ目の右か2つ目の右かという事です。

 

「現在の行まで」「現在の列まで」というのはアクティブにしたセルの下側あるいは右側になるんです。

 

エクセルになれている場合はコレをよく分からないまま何となく使っていると、積み重ねで時間のロスになっているかもしれませんよ。

 

この際まとまった時間を少しだけ費やしキチント理解してから使うようにしてみましょう。

 

 

A. 通常の使い方で固定してみる

 

空白でもいいですが、固定されたあとにデータがある程度入っていないと固定した意味が確認しにくいので適当なデータを用意してから固定をしてみます。

 

1.適当なデータを用意する

 

 

一つ適当なデータとしては例えば統計局の消費者物価指数をエクセルでダウンロードできるので、そのダウンロードしたものをスプレッドシートで開いてみましょう。

 

サイトは:https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200573&tstat=000001084976&cycle=1&year=20200&month=24101211&tclass1=000001085955

 

統計表1-1 中分類指数(全国)のテータをダウンロードします。

 

スプレッドシートでインポートし読み込みます。

 

インポートのやり方はメニューのファイル>インポートを選び、ダウンロードしたファイルのアップロードで読み込みます。

 

2.メニューから辿り普通にセルを固定してみる

 

 

アップロードしたデータを読み込んだら、固定したいようにメニューの表示>固定から行、列それぞれあるいは両方固定してみます。

 

用意したデータは行、列ともに固定されているのでいったん固定を解除します。

 

解除方法はメニューの表示>固定から行なし、列なしをそれぞれ順番に行えば解除されます。

 

セルの位置に基づいて固定する場合

 

次に、セルの位置に基づいて固定する場合は固定される位置はスプレッドシートの場合は指定したセルの下と右の境界線になるので、そのようにセルを配置します。

 

セルの位置に基づかない場合

 

それ以外はセルの位置に基づかない場合で行、列それぞれ固定を1行にするか2列にするかで組み合わせとしては、

 

  1.  行のみ固定で1行固定
  2.  行のみ固定で2行固定
  3.  列のみ固定で1列固定
  4.  列のみ固定で2列固定
  5.  行を1行、列を1列それぞれ固定
  6.  行を2行、列を1列それぞれ固定
  7.  行を1行、列を2列それぞれ固定
  8.  行を2行、列を2列それぞれ固定

 

と全部で8通りあります。

 

B. マクロで固定の自動化を試みる

 

エクセルで私がよく使うのがセルを選び行も列も一度に固定する方法ですが、スプレッドシートでは一度にはできないようです。

 

これを少し効率化する為に、マクロ作成を試みてみます。

 

手順1 マクロで記録

 

メニューでツール>マクロ>マクロを記録 を選択。

 

マクロはスクリプトエディターのマクロ.gs として保存されます。

 

コードを表示すると以下のようになります。

 

  • 絶対参照の場合

マクロ記録を絶対参照にて始めて、

最初に例えばA1セルをアクティベートさせ、それぞれ現在の行および列で固定を行った場合のマクロ記録は以下のようになります。

 

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  spreadsheet.getActiveSheet().setFrozenRows(1);
  spreadsheet.getActiveSheet().setFrozenColumns(1);
};

 

  • 相対参照の場合

スプレッドシートにて例えばA1セルをアクティベートさせた後にマクロ記録を相対参照にて始めて、

最初にB5セルをアクティベートさせ、それぞれ現在の行および列で固定を行った場合のマクロ記録は以下のようになります。

function myFunction2() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(4, 1).activate();
  spreadsheet.getActiveSheet().setFrozenRows(5);
  spreadsheet.getActiveSheet().setFrozenColumns(2);
};

 

のようになっています。

この中の

spreadsheet.getActiveSheet().setFrozenRows(x);

spreadsheet.getActiveSheet().setFrozenColumns(y);

 

が列および行をそれぞれ固定するコマンドスクリプトであります。

 

x, y は固定するセルの位置に対応するセルの位置情報であり、例えばA1セルならxは1、yは1

B5セルならxは5、yは2となります。

 

function myFunction() {

} と共に{…}の...部分には

var spreadsheet = SpreadsheetApp.getActive();
が必ず生成されます。
マクロを次々と作成すると全てマクロ.gsの同じスクリプトエディターの同一シート上に上から記録されていきます。
こんな感じです↓
  

手順2 マクロで生成されたスクリプトを修正

 

 

自動作成されたマクロでは目的を達成できないので、その作成されたスクリプトを修正していきます。

 

修正したマクロは以下の通りです。

 

function kotei(){

var ss = SpreadsheetApp.getActiveSpreadsheet();

var cel = SpreadsheetApp.getCurrentCell();

var row = cel.getRow();

var col = cel.getColumn();

ss.setFrozenRows(row-1);

ss.setFrozenColumns(col-1);

}

 

上から順番に解説します。

 

0.   走らせるGASプログラム名を kotei() として定義します。この名前はなんでもOK!

1. アクティブなスプレッドシートを変数ssとして定義し取得します。

2. アクティブなセルを変数celとして定義し取得します。

3. 列の位置をrowとして定義し取得します。

4.   行の位置をcolとして定義し取得します。

5.   rowの位置情報に基づき列を固定します。行の位置をエクセルと同じにする為にマイナス1で調整。

6. colの位置情報に基づき行を固定します。列の位置をエクセルと同じにする為にマイナス1で調整。

 

ポイント列や行の位置情報をいかにして取り出すかです。

 

一つその手助けになるのは、実行ログ情報を表示させることにあります。

以下のようなスクリプトを行に加えて実行ログ情報を表示させてみて下さい。

Logger.log(row)
Logger.log(col)

 

手順3 実行し正しくスクリプトが動くか確認

 

 

実際成功するまでは、手順1から3の次に、失敗したら頭を悩ませながら修正する手順4があります。

 

手順1 >>手順2 >手順3 >手順4 >手順2....  のループ作業です。

 

実行方法としては3つあり、

 

1.GASページにて実行する。

 

2. スプレッドシートにおいてメニューのツール>マクロ 作成した名前を選択する。

 

3.   ショートカットキーとして、Ctrl+Shift+Alt+数字 を設定したならば、その組み合わせキーで実行する。

 

1の場合は、スプレッドシートで反映させるときの状況が見えないので、2あるいは3で実行するのがいいのです。

 

ベストな固定方法は、もちろんシート上にてセルをクリックしアクティブにして3のショートカットキーボードで実行

 

スプレッドシートでもエクセルと同じように簡単にできるようになったでしょうか?

 

 

固定の解除方法

 

 

同じように記録したマクロを別のマクロ名として登録しそのショートカットキーも登録します。

 

修正するのは、

 

ss.setFrozenRows(0);

ss.setFrozenColumns(0);

 

のように括弧の中を0にするだけ

 

作成して実行してみましょう。

 

答えは下の方に記しておきます。

 

ちなみにマクロで記録したスクリプトはスプレッドシートを表示させた状態でメニューから選び実行できますが、スクリプトエディターでスクリプトを記述して作成したものもインポートして登録する事でスプレッドシート側から実行できるようになります。

 

ショートカットキーもマクロの管理から登録できます。

 

 

 

 

function koteikaijyo() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getActiveSheet().setFrozenRows(0);
  spreadsheet.getActiveSheet().setFrozenColumns(0);
};

まとめ

 

いかがだったでしょうか?

 

マクロを使い記録して自動作成されたスクリプトを修正したGASスクリプトでも固定機能を使えるようになったでしょうか!?

  • スプレッドシートの固定機能は直感で分かりにくい
  • スプレッドシートの固定機能は行と列を同時に一回で固定できない
  • スプレッドシートの固定機能はエクセルと同じようにセルをアクティブにした後に行と列を一瞬で固定できるようにGASを作れる

 

固定機能のみでなくとも、色々とより使いやすく便利にする為に動作をスクリプトに反映でき比較的分かりやすいマクロから試してみてくださいね。

 

 

超ブラック勤めリーマンの副業収入を見てみる

会社員で、時間が全然取れなくて
いつも精神が削られてる日々を過ごしていた
ゆうたくと申します。

 

で、あんた誰ですか?ってなると思いますので
簡単に自己紹介をさせて頂きます。

 

愛知県名古屋市生まれ・育ちの
ブラック企業勤めの会社員です。
時間がなくて、超ハードです。

 

たいした才能も特技もない
面倒臭がりのダメダメ人間で、いつも忙しいとか
時間がないが口癖のわたしが副収入を
手に入れることができました。

 

正直、だれでもやりゃできちゃうと思います。

 

面倒くさがりの、時間拘束の多い会社員しながらでも稼ぐことに繋がったかを以下の記事で公開しています。

ゆうたくの面倒くさがりっぷりを詳しくみてみる

 

 

激務でも関係なくなるスマホ戦略はこちらから

時間のとれないサラリーマンのわたしでも

たったの3か月で実践できた

副業収入の作り方はこちら

↓↓↓↓↓↓

コメントフォーム

名前 

 

メールアドレス 

 

URL (空白でもOKです)

 

コメント

トラックバックURL: 
プロフィール

失敗ばかりの人生だったけど

その失敗談を惜しみなく発信します

ブ○ック企業の営業職。

国内海外各地へ出張多数

スマホ1つで副業開始!

パソコン苦手でも成果が出るまでの道筋を発信!

外注さん100人以上雇ってます。

kindle出しました。

詳しいプロフィール


<人気ブログランキング>
応援よろしくお願いします

最近の投稿
カテゴリー
ツイッターはこちら
スマホぴっくはこちら