「worksheet」タグアーカイブ

EXCEL2:使用可能メモリに依存

Sheets.Visible = False

エクセルのワークシートは、何シートまで追加できるか?

Office Supportによると、「Excel の仕様および制限」
ブックのシート:  使用可能メモリに依存 (既定値は 1シート)

と書かれていて、最大何シートまでというシート数という値ではなく、つまり、シート自体にも容量があるわけですから数は無制限に追加できるわけではなく、適当にシートのコピーして追加しただけでもう保存が出来なくなったり、エクセルが開かなくなったりすることもあるかもしれないということで、何シートの数というより、1ブックの各ワークシートにどれだけのデータ量を留めておくか、に関わってくるようです。

シートをどんどん追加して、シート数を増やしても、各シートの名前の「シートタブ」は縮小されず、左端シートタブのさらに左方にある三角印(シート見出しスクロール)のあたりで右クリックすれば、全体のシート名一覧が見られます。

シート数を追加して、〇年〇月-〇月分などと優先的にいつも見たいシート以外は非表示にしておいたり、また、集計などの隠しシートを作る場合もありますが、再表示するときに1シートずつ表示する操作になるため、シートの表示非表示の際に便利なマクロなど、用意しておきたいです。

EXCEL2:XFD (16,384 列)

「ワークシートに1行、列番号を入力する」
このたび、エクセルで一度やってみたかった事をやってみました。夏休みの自由研究みたいな課題ですが、ワークシートの列番号と同じアルファベット英文字を1行で入力する、という事です。Rio 2016オリンピックを早朝TV観戦しながらWinPCエクセルでワークシートを作成して結果、Twitterに投稿しました。

プログラムは使いません。ワークシートの列番号と同じアルファベット英文字を1行で入力するという、誰にでも出来そうな簡単な事なのですが、上手くやらないとメモリ不足等でエクセルが壊れてしまいます。

ワークシートの行列数は、EXCELの仕様で、

EXCELヴァージョン2007以降
1,048,576 行
16,384 列 XFD 列

EXCELヴァージョン2003以前
65,536 行
256 列 (IV 列 アイヴィ列)

行数は行番号と同じですが、列番号はアルファベットで表記されますので、加工する項目名がAB列とかBI列(それ以降も表がある)などPC画面上で表全体を見ることが出来ない非常に横長の表も時にはあったりします。

以前のヴァージョンの頃テクサポの問合せに、エクセルでは横列で365日データを記録できないのでなんとかならないか等々、勤務中のデスクというユーザ様からキテレツな問合せを受けた様な気がしたものでしたが、現ヴァージョンでは、
16,384列 = 256列 × 64
365 / 16384 ≒ 44.888 、列の方向で充分に40年以上分満たせることになります。

EXCEL2007以降の列番号アルファベットは、Aから3桁までになっています。
A- Z 1~26列 (26列)
AA- ZZ  (26×26= 676列)27~702列
AAA- AZZ(26×26= 676列)703~1378列
BAA- BZZ(26×26= 676列)1379~2054列
CAA-

WAA- WZZ(26×26= 676列)15575~16250列
XAA- XFD (134列)    16251~16384列

オートフィルでA,B,C, のアルファベット連続入力機能は既定では無いので、オプションの詳細設定(全般)「ユーザー設定リストの編集」で並べ替え順や連続データ入力設定で使用するA,B,C,リストを追加して作成します。この追加リストは、大文字小文字いずれかしか登録できないようです。リスト追加後は、全角半角どちらでもオートフィルでA,B,C連続入力できるようになります。

行の方向に、A列:1~ 16384を入力、B列: A~ XFDを作成して、行列を入れ替えて貼付けする方法もあるかと思います。PCのマウス操作だとPC画面上から大幅にスクロール、長時間になるので、キーボードショートカットを使う方が効率的です。

列番号の入力が完了すれば、

DOC 列 は 3097
JPN 列 は 7190
POP 列 は 11222
TCP 列 は 13614
RIO 列 は 12417
UFO 列 は 14367
XYZ 列 は ありません。

2016 は BYN 列
2020 は BYR 列
11111 は PKI 列
12345 は RFU 列

列番号を1行目に作成して、セルを1行すべて埋めてしまいます。
同様に、行番号もA列などに1行入力して、A列セルすべてにデータを入力してみます。このような状態のワークシートに、さらに1列(1行)追加、列挿入あるいは行挿入の操作をすることはできません。下記のような日本語でエラーメッセージが出て、EXCELの仕様制限の警告になります。

「データの消失を防ぐため、空白でないセルをワークシートの外に移動することはできません。新しいセルを挿入する別の場所を選択するか、ワークシートの末尾からデータを削除してください。」

ヴァージョン2003以前の65536行ワークシートにデータを読み込んだ時、インポートデータがすべて取込まれていない場合に、このようなエラーメッセージがわりとよく発生していました。65536 行では日本全国の郵便番号データベースも一括で読み込めず、地域別ワークシートを作成していましたが、現在は、12万件以上の全国郵便番号データが1シートでOKです。

EXCEL2:ゼロをとる

エクセルでワークシートのゼロ値を表示させない方法は、IF関数を使うなどいくつか御存じだと思いますが、ワークシート上に実際ゼロがある、と空白セルの見分けができなくなってしまいます。
実際に値があるセルなのに非表示にする場合、エクセルが消したゼロの値を忘れていない、という事をどのように知る事ができるでしょう。

たとえば、オプションの詳細設定で「ゼロ値のセルにゼロを表示する」のチェックボックスをオフにして、ワークシートのゼロ値を非表示にします。元々ゼロが入っていたセルを範囲選択すると、ステータスバーのオートカルクには、データの個数が「カウント」されています。COUNT関数を使っても同様の結果になります。

実際、ゼロ値が何処にあったのか、という場合は、「数式の表示」ボタン(ショートカットキー:Shift+Ctrl+@))で数式と同様に、ワークシートで非表示設定中のゼロ値が表示されるようになります。

別の手段でゼロ値を消す例に、条件付書式で[指定の値がゼロと等しい]場合に、フォントの色をセルの色と同色にすればよい、という考え方もあるかもしれません。この場合セル色を他の色に設定しない限りゼロ値が見えません。
通常のワークシートで、隠しておきたい数式の結果をわざわざフォント色を白に設定して、一見なにもやっていないように消してみせることが可能です。

EXCEL2:空ファイルサイズ

PCデスクトップにOfficeアプリの新規ファイルを作成する場合、いくつか方法があると思いますが、

1、スタートメニューのOfficeから起動して新規ファイルを作成、または、既存のファイルを起動中に新規ファイルを作成する。
2、PCデスクトップ上で右クリックメニュー、新規作成からOfficeアプリを選択する。

新規のワークシートで入力も何も作業しない、空ファイルの状態でデスクトップに保存すると、上記1は「Book1」で、2は「新規 Microsoft Excel Worksheet」という名前です。

さらに、保存したファイルの「プロパティ」でファイルの容量を気にしてみることにします。自分のPCでいずれのExcelでも「デスクトップ上のサイズ」が8KBと表示されています。
「ファイルサイズ」の方は、「Book1」が「新規 Microsoft Excel Worksheet」より値が大きくなっています。

また、たとえば、何も文字入力していない空のエディター(メモ帳など)は0KBなので、何も作業していないExcelは書式やツール等初期値に何か含まれているのかと思われるのですが、同様の作業をWordで実行すると、「新規 Microsoft Word Document」は0KBになるので、Wordはエディター類と同様と思われます。

ワークシートに何か文字入力すると、文字数分のバイト数、容量が大きくなりますが、入力した文字を削除(delete)しても元のサイズの値に戻らず、文字入力された情報は残されている可能性があります。しかし、ワークシートを削除してファイルサイズの値を見ると、データを削除したサイズより値が小さくなるので、入力されたデータが丸ごと消去され、初期の状態に戻っているかもしれません。

ちなみに、ファイル名はファイルサイズと無関係みたいです。