エクセル技道場 HOME |
エクセルの技 目次 |
シート |
関数 |
名前定義 |
ツールバー |
セル選択 |
ファイル |
条件付き書式 |
書式設定 |
編集 |
印刷 |
入力規則 |
マクロ |
グラフ |
ピボットテーブル |
エクセル・ショートカット |
エクセル関数語源リスト |
エクセル関数引数リスト |
Shift+F11
【解説】
シフトキーを押しながらファンクションキーのF11を押します。この場合、私は右手親指でシフトキー、人差指でF11を押しています。押し続けるとシートがどんどん追加されます。
以下の方法でもできますが、Shift+F11の方が速いです。
−メニュー[挿入]−[ワークシート]
−シート見出しを右クリック−[挿入]で、[標準]タブの[ワークシート]を選択してからEnter
シート見出しを右クリック−[削除]でEnter
【解説】
Altキーを押してから、キーボードのE、LでEnterでもできます。慣れれ ばこちらのやり方の方が、早いかもしれません。このやり方は厳密な意味でのキーボードショートカットではありません。アクセラレーションキーと言われるメニューなどに割り当てられた略号を利用するものです。
もちろん、マウスでメニュー[編集]−[シートの削除]でOKボタンをクリックでもワークシートを削除できます。
1.メニュー[ツール]−[オプション]で[全般]タブを選択
2.[新しいブックのシート数]にシート数を入力
シート数の初期設定は、3枚になっています。
1枚のシートにしかデータが入力されていないのに、白紙の2枚のシートがくっついているファイルをたまにみかけます。多分、シートを削除するのが面倒なので、そのままにしているのだと思います。
もし、1枚目だけに文書、それに2枚の白紙がホッチキスでとじられた書類をもらったら、どうでしょう?変ですよね。
シートを追加したい場合には、Shift+F11で簡単にできます。[新しいブックのシート数]は1枚に設定しておきましょう!
■次のシートに: Ctrl+PageDown
■前のシートに: Ctrl+PageUp
【解説】
キーボードを押したままにしていると、どんどん次(前)のシートに切り替わります。
押しっぱなしにしていると、最後(最初)のシートで止まります。
シートが複数あるファイルで、シートを一つ一つチェックする際には、このキーボードショートカットが便利です。Ctrlキーを押しながら、PageDownキーまたはPageUpキーを押します。
■ =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)
【解説】
MID関数、FIND関数、CELL関数の組み合わせでワークシート名をセルに表示させます。
○CELL関数
=CELL("filename",$A$1)
対象範囲(この場合セルA1)を含むファイルの名前
(絶対パス名) を表す文字列を返します。
例えば、CドライブのMy Documentsフォルダにある「売上高」というファイルのシート「東京支店」のセルのどこかに=CELL("filename",$A$1)を入力すると、
C:\My Documents\[売上高.xls]東京支店
と表示されます。
新規ファイルを作成してまだ保存していない場合には、表示されません。一回保存すれば表示されるようになります。
対象範囲(この場合セルA1)を省略することもできます。ただし省略した場合には、現在アクティブになっている(選択されている)セルを含むファイルの名前
(絶対パス名) を表す文字列を返します。
なお、A1ではなく$A$1と絶対参照にしているのは、式をコピーした時などにエラーになるのを防ぐためです。
○FIND関数
=FIND(検索文字列, 対象, 開始位置)
指定された検索文字列(この場合、"]")を対象(この場合、=CELL("filename",$A$1)の返り値である
"C:\My Documents\[売上高.xls]東京支店"
)の中で検索し、その検索文字列が対象の中で最初に現れる位置を左端から数え、その番号を返します。今回のケースだと25になります。
○MID関数
=MID(文字列, 開始位置, 文字数)
文字列:
「取り出す文字を含む文字列を指定します。目的の文字列が入力されたセル参照を指定することもできます。」今回の式で文字列は、CELL("filename",$A$1) の返り値である
"C:\My Documents\[売上高.xls]東京支店"
です。
開始位置:
「文字列 から取り出す先頭文字の位置 (文字番号)
を数値で指定します。文字列 の先頭文字の位置が
1 になります。」開始位置は、FIND("]",CELL("filename",$A$1))+1 の返り値(この場合、26)です。+1 しているのは"]"の次の文字からという意味です。
文字数:
「取り出す文字数を指定します。」シート名の最大文字数 31 としています。
シート名に設定できる文字数の制限については、以下のマイクロソフトのページに解説がしてあります。
「シートコピーの際に「シート名が長すぎます」メッセージが表示される」
文字数をシート名の最大文字数31としているのは、MID関数の”開始位置”
が文字列 の文字数より小さく、開始位置 と
文字数の和が文字列の文字数を超える場合、開始位置から文字列の最後までの文字が返されるからです。
○ワークシート名を表示する関数として、
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
という式が紹介されることがあります。
今回紹介した式
=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)
の方が短いです(^-^)/
しかも、CELL関数の対象範囲を省略すると、その関数が入力されているシート名ではなく、現在アクティブになっているシート名が表示されてしまいます。
二つのファイルを開いて、メニュー[ウィンドウ]−[整列]−[並べて表示]として、一方のファイルに私の紹介した式と上記の式をそれぞれ入力してみてください(このメールからコピーして貼り付けをすれば簡単です)。どちらの式も関数を入力したシート名が表示されます。
ここでもう一方のファイルをアクティブ(選択)して、なにか入力してエンターを押してみてください。私の紹介した式はそのままですが、もう一つの式の場合にはアクティブになっている別のファイルのシート名が表示されてしまいます。
○もし、アクティブなシート名を表示させたい場合には、以下の式の方がシンプルです。
■ =MID(CELL("filename"),FIND("]",CELL("filename"))+1,31)
○エラーになるケース
=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)
この式の結果がエラー(#VALUE!)になる場合があることをぽうさんに教えていただきました。「ファイル内にシートが一枚しかなく、そのシート名がファイル名と同じ場合」にエラーになります。
理由は、=CELL("filename",$A$1)の返り値が、CドライブのMy
Documentsフォルダにある「売上高」というファイルのシート「東京支店」の場合には、
C:\My Documents\[売上高.xls]東京支店
ですが、シート名がファイル名と同じ「売上高」の場合には、
C:\My Documents\売上高.xls
というふうになるからです。
上記式では、”ワークシート名を表示する関数”の場合"]"が何番目にあるかを探している部分がありますが、「ファイル内にシートが一枚しかなく、そのシート名がファイル名と同じ場合」にはこの"]"がないので、FIND関数の返り値がエラーとなってしまうのです。
「ファイル内にシートが一枚しかなく、そのシート名がファイル名と同じ場合」にも対応した式は以下の通りです。長い式なので改行が入っていますが、一つの式です。
=IF(ISERROR(FIND("]",CELL("filename",$A$1))),MID(CELL("filename",$A$1),FIND("*",SUBSTITUTE(CELL("filename",$A$1),"\","*",LEN(CELL("filename",$A$1))-LEN(SUBSTITUTE(CELL("filename",$A$1),"\",""))))+1,FIND(".",CELL("filename",$A$1))-FIND("*",SUBSTITUTE(CELL("filename",$A$1),"\","*",LEN(CELL
("filename",$A$1))-LEN(SUBSTITUTE(CELL("filename",$A$1),"\",""))))-1),MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31))
一つの式にしましたが、実際にこの式を使う場合は、例えば =CELL("filename",$A$1) という式をA1に入れておいて、上記式中のCELL("filename",$A$1)を$A$1に置換えるというふうにしてもOKです。
解説は省略させていただきますが、上記式を読み解く鍵は、C:\My
Documents\売上高.xls がセルA1に入っていたとして、
=LEN($A$1)-LEN(SUBSTITUTE($A$1,"\",""))
が意味するところを理解することです。これは2を返します。"\"が2個あるということです。2番目の"\"は文字列中の最後の\でもあります。
ぽうさんのホームページはこちらです。
○エラーになるケース2
「ファイル内にシートが一枚しかなく、そのシート名がファイル名と同じ場合」にも対応した式をご紹介いたしました。
式の中に拡張子「.xls」の「.」を検索する部分があったのですが、フォルダ名に「.」が付いている場合(例:「test.1」)には、エラーになることを、ぽうさんにご指摘していただきました。
改良版は以下の式です。「.」についても「\」と同じく最後の「.」が何番目にあるかというふうに改良しています。
=IF(ISERROR(FIND("]",CELL("filename",$A$1))),MID(CELL("filename",$A$1),FIND("*",SUBSTITUTE(CELL("filename",$A$1),"\","*",LEN(CELL("filename",$A$1))-LEN(SUBSTITUTE(CELL("filename",$A$1),"\",""))))+1,FIND("*",SUBSTITUTE(CELL("filename",$A$1),".","*",LEN(CELL("filename",$A$1))-LEN(SUBSTITUT
E(CELL("filename",$A$1),".",""))))-FIND("*",SUBSTITUTE(CELL("filename",$A$1),"\","*",LEN(CELL("filename",$A$1))-LEN(SUBSTITUTE(CELL("filename",$A$1),"\",""))))-1),MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31))
もちろん、フォルダ名に「.」をつける、一枚しかないシートにファイル名と同じ名前を付けることがなければ、もともとの
=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)
で良いと思います。
■見出しスクロールボタンを右クリック
見出しスクロールボタンとは、シート見出しの左にある矢印のボタンです。
表示されたシート一覧のシート名をクリックすると当該シートがアクティブになります(選択される)。
ブック内に多数のシートがある場合には、一部のシートタブがスクロールバーの下に隠れてしまいます。そんな時にこの技は便利です。
表示されるシート名は15個までです。
15枚以上のシートがある場合には、見出しスクロールボタンを右クリックすると[シートの選択...]というメニューが出てくるので、それをクリックして[シートの選択]ダイアログボックスでアクティブにしたいシート名をクリックして、エンターを押します。
■隣接する複数のシートを選択:
選択する先頭のシートのシート見出しをクリックし、Shiftキーを押しながら、末尾のシートのシート見出しをクリック。
■隣接しない複数のシートを選択:
選択する先頭のシートのシート見出しをクリックし、Ctrlキーを押しながら、次のシートのシート見出しをクリック。
■ブック内のすべてのシートを選択:
シートタブを右クリック−[すべてのシートを選択]
■解除:
選択されていないシートをクリック。
または、シート見出しを右クリック−[作業グループ解除]
【解説】
複数のワークシートを選択しているときに、作業中のシート(アクティブになっているシート)のセルを変更すると、選択した他のシートの対応するセルも変更した内容に置き換えることができます。
この技で同じ体裁の複数のシートを一回の入力で処理することができます。
例えば、2枚のシートのどちらにもA1セルに部署名が入っていたとして、上記の技でその2枚のシートを選択してから、A1セルに新しい部署名を入力するとどちらのシートのA1セルも新しい部署名に変わっています。
■シートの非表示
メニュー[書式]−[シート]−[表示しない]
■シートの再表示
1.メニュー[書式]−[シート]−[再表示]
2.[表示するシート] ボックスの、表示するシート名をダブルクリック。
【解説】
作業用のシートを非表示にする、などの使い方があります。
【問題】
シート内の一部の範囲だけ(例A2:A10)、データの変更を可能とし、他の範囲は変更できなくするにはどうしたら良いでしょうか?
【回答】
1.A2:A10を選択
2.Ctrl+1 (メニュー[書式]-[セル])
3.[保護]タブの[ロック]のチェックをオフに
4.Enter
6.メニュー[ツール]-[保護]-[シートの保護]
7.Enter
【解説】
シートの保護を解除するには、メニュー[ツール]-[保護]-[シート保護の解除]です。
上記手順3.で、 [表示しない]のチェックをオンにすると、シートを保護したときに数式バーにそのセルの内容、数式などを表示させないようにすることができます。
シートの保護をかけると、ロックのかかっていないセルに対する操作も制限されます。セルの削除、挿入、セル幅と高さの変更などはできません。これらを行うためには、一度シートの保護を解除する必要があります。
Tabキーを押すと、ロックされていない範囲内を移動します。
シートの保護にはパスワードをかけることもできます。パスワードを設定すると、保護を解除する際には必ずパスワードの入力が必要になります。
以下は関連のページです。
Microsoft's Policy Regarding Missing or Invalid
Passwords
[XL95] 保護されたシートを含むブックで表示形式の設定を削除する際の注意
[XL97] TAB または SHIFT+TAB を使用していくつかのセルが選択されない
[XL2000] ワークシートの特定のプロパティが保存できない
【問題】
シート内で数式の入力されているセルだけを保護(変更を不可に)するには、どうしたら良いでしょうか?
【回答】
1.[全セル選択]ボタンをクリック(またはCtrl+A)
2.Ctrl+1 (メニュー[書式]-[セル])
3.[保護]タブの[ロック]のチェックをオフに
4.Enter
5.Ctrl+G (メニュー[編集]-[ジャンプ])
6.[セル選択]ボタンをクリック
7.[数式]オプションのチェックをオンに
8.Enter
→シート内の数式が入ったセルが選択される
9.Ctrl+1 (メニュー[書式]-[セル])
10.[保護]タブの[ロック]のチェックをオンに
11.Enter
12.メニュー[ツール]-[保護]-[シートの保護]
13.Enter
【解説】
上記手順は、以下を実行しています。
・全セルを選択して、ロックを解除
・数式が入っているセルだけを選択してロック
・シートの保護
初期設定では、すべてのセルに[ロック]がかかっているため、このような手順になります。
上記手順では、シート内で数式の入力されている全てのセルが保護(変更を不可に)されます。
シート内で数式の入力されているセルのうち、特定の範囲内だけを保護したい場合には、その範囲を選択してから
Ctrl+G とします。
上記手順10.で、 [表示しない]のチェックをオンにすると、シートを保護したときに数式バーにそのセルの内容、数式などを表示させないようにすることができます。