- ベストアンサー
Excel 書式数のカウントについて
こんにちは。 Excel2007を使用しています。 作成した資料は、Excel2003など書式の組み合わせ上限がある ソフトを使用する人にも共有するため、 書式の上限(約4000)に達していないかのチェックをしたいと 考えています。 Excel2003までであれば下記方法でできるようなのですが、 私の手元にあるOfficeは2007です。 下記以外に、書式数をカウントする方法はないでしょうか? http://okwave.jp/qa3768586.html どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足と訂正 Excel 2007 の書式の上限は、64,000 個だそうです。 http://office.microsoft.com/ja-jp/excel/HA100778231041.aspx 「アプリケーションとして、ブックにデータをレコードして、カウントしている部分はあるかと思いますが、それは、VBAでは分からないと思います。」 前述のVBAで取れないというのは、私の間違いでした。しかし、Biffファイルをバイナリでとって、そこから必要な箇所を抜き出すということで、VBAでも可能のようです。File Format も公開されていますから、そこからバイナリで勘定することが可能のようです。ただ、私の趣旨とは違いますので、必要ならインターネット検索でお探しください。 File Format http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx#ESB 以下は、直接の回答の趣旨とは違いますが、かなり昔に書いた私のログです。一部、前述と重複してしまいます。私の考え方は、以下の説明でお分かりいただけるように思うからです。 マイクロソフトのサポートにある、4,000個の書式の意味ですが、シートに対する累積的な書式などの組合せの数です。 ひとつのセルと別のセルが、まったく同一の書式の組合せなら、同じ書式ですが、その書式のひとつが違えば、別の書式になってしまいます。 例えば、マイクロソフトのサポートの文章を参考にして、計算してみます。 括弧内は、その選択の「それぞれの書式設定の種類」です。 1. 文字設定 (フォント、フォント サイズ、斜体、太字、下線など) (3) -デフォルトは除きます 2. 罫線 (位置、太さ、色など) (3) 3. セル パターン (2) 4. 数値の表示形式 (3) (5. 配置 (2)) -デフォルト (6. セルの保護 (1)) -デフォルト 7. ユーザー書式 (2) デフォルトは除いて、「それぞれの書式設定の種類」の中で、ユーザー書式以外は、重複を許して選ぶことが出来ます。 COMBIN というのは、COMBINATION(組合せ)のことです。 n個の中から、r個を重複を許して取り出す組合せは、COMBIN(n+r-1,r) で、NO.7以外は、以下のような式になります。 NO.1 =COMBIN (5,3) NO.2 =COMBIN (5,3) NO.3 =COMBIN (3,2) NO.4 =COMBIN (5,2) NO.7 =COMBIN (2,1) ----------------- =PRODUCT(NO.1 : NO.7) PRODUCT というのは、NO.1 × NO.2 ×……ということです。 とすると、6,000個 の組合せになります。つまり、代表的な書式でも、6,000種類もあって、そこから抽出するわけです。確かに、4,000個までが上限ですと、ユーザー選択に制限が加えられることは間違いないようです。(書式の種類を積み上げで、その数を出すということはできないことはお分かりになると思います。) つまり、これらのそれぞれの書式設定を、使用しているセルの範囲に対して、別々に独自に使用することを避けて、なるべく統一した書式にしてあげることで、「セルの書式が多すぎる」という問題を避けることが出来るわけです。 だから、具体的に、デフォルトなり、元の設定(書式-スタイル)自体で、例えば、桁区切りなどに設定してあげれば、その数を減らせることになるわけです。 なお、この計算は、Excel 2007には当てはまらないことではあるのですが、いくら、上限が64,000になったとしても、色の選択肢が増えましたから、使い方によっては、すぐに上限に届いてしまいます。やはり、上限までにいくつあるかというよりも、使いこなしの問題には変わらないように思っています。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 前回、回答した者として、書かせていただきます。 まず、Excel2007 とExcel2003 とは、そのメモリの分散や回避に対する使い方が違います。 上限というよりは、本質的には、それは表示に使われるメモリの割り振りだと思います。それは、Excel2003までのものです。私は、VBAで主に回答している者ですが、一旦、上限まで昇って、その差を残り分だという考え方で、VBAのコードを書いたところで、それは本質的に意味がありません。コードが間違いだとは言っていませんが、実際とは違います。 本来は、「表示形式を追加できません」のエラーメッセージに対するものです。 「セルを、それぞれ異なる色で塗り潰す」「フォントを太字にする」「罫線を引く」から、それぞれの数だけということではないのです。単独で、それぞれ使えば、Excel2003まででは、確かに数は出せます。 しかし、私は、前回の質問では詳しく回答していませんが、その書式等の設定の数え方は、単純ではなく、複合的に絡み合うので、思った以上に、その数を使ってしまう旨を書きました。つまり、色塗りと罫線があるとすれば、その色塗りと罫線の組み合わせを一つとします。同じ色塗りでも、それが二つも三つにもなるわけです。 ですから、前回の掲示されたVBAでは、現在の書式設定から先の積み上げで、それぞれは数えることは可能でも、実際のユーザーによる設定は、組み合わせですから、予測はしがたいものだと思うのです。まず、使い方の要領を理解することです。 私は、下位バージョンでも、本質的に、VBAでは無理だと思います。ワークシートの問題は、ワークシートの問題です。私の回答は、マイクロソフト側は、常識的な使用法に対して、エラーはでないという、根底で発言していますし、また、その程度のソフトウェアの信頼性がなくて使えるものではないように考えています。それを、性能の上限までぎりぎりで使いたいという使用法やコンセプトは、あまり深入りはしたくないので、詳しくは書きませんでした。 ここの、ご質問者さんの中には、時々、そういう方はいますから、私は、その質問自体を否定するわけではありません。 そのメッセージの問題自体の解決方法は、マイクロソフトで出ているわけですから、マイクロソフト側のサポートを、お読みください。 http://support.microsoft.com/kb/213904/ja Excel でエラー メッセージ "表示形式を追加できません" が表示される [ほとんどの場合、単一ブックに対する書式の組み合わせの上限は約 4,000 で十分です。この問題は、異なる書式設定を使用する多数のワークシートがブックに含まれているか、多数のセルすべてに異なる書式が設定されてる場合に生じる傾向があります] (私の解釈としては、その書式等の設定は、まとめてすることで、後付けで、個々の書式等の設定をしないことです。どうも、Excelは、同じ設定でも、罫線などは、なぜか、後付けすると別に数えるようです。) 確かに、Excelの実質的な上限というのは、ここかしこにあります。セルの文字数、ワークシートの数など、論理的限界のほぼ10分の1ではないか、と推測する上限に出会うことがあります。Excel2003までは、それを、それぞれに振り分けして、どうやら分散・回避しないようです。それは、Excel 2007とは考え方が違います。 しかしながら、その上限を知るということよりも、それにまつわる部分は、ユーザーの使用方法に問題があるように思います。 なお、おそらく、アプリケーションとして、ブックにデータをレコードして、カウントしている部分はあるかと思いますが、それは、VBAでは分からないと思います。
2007で動作確認しましたか? 自分でVBAを勉強しましたか? 以上
補足
私の投稿にも説明不足がありましたので、 こちらで補足させていただきます。 2007で動作確認してできませんでしたので投稿しています。 また、必ずしもVBAで解決しようとはしていませんが、 検索して見つかった近い資料はVBAでした。 (貼りつけさせていただいたURLのポイントが付与されている 投稿を参照ください) Excelの単純な機能として探していました VBAでしか解決できないのであれば、例えば、もし下記記載のどこを どのように変更すれば実現可能なのかを知りたいです。 ただし、エラーを検出してハンドリング(?)する仕組み のようなのでエラーが出ない(?)Excel2007ではどのように 考えればよいか?からが不明です。 http://okwave.jp/qa3768586.html Excel2007の何らかの機能で書式数のカウントを できるのであればその方法を知りたいです。 (自身でソフトのヘルプやGoogleで探したところ 見つかりませんでした)
お礼
ご丁寧なご回答ありがとうございます。 ご回答内容から自身でも関連事項をいろいろ調べてみました。 とても参考になりました。