- ベストアンサー
エクセルのセルの列数
エクセルの行数は2進数が関係するため(10進数的には)中途半端な、65,536行もあるのに、列は254(255?)しかありません。列を増やす方法ってないんでしょうか?どなたかご存じないでしょうか?最低でも1000ぐらいほしいのですが?? よろしくおねがいします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
vba_minaraiさん、こんにちは。 Wendy02です。 人間は、一度に見れる幅は多くはありませんが、散布図で使われるようなグラフ・スクリーンやVBのピクチャー・コントロールも、基本的には横の制限はありません。 それから、初期の表計算は、4096行 ×255列 でしたね。 表計算のQuattro Proですと、1,000,000行 × 18,278列です。 なお、現在は、コーレル社のWord Perfect Officeの中に入っています。以前は、単独で、US$20.-以下のようでしたが、今は抱き合わせしかありませんから、2万円は越えますからちょっとお高いですね。 >2つのシートをブックのウィンドーの中で、横方向に連続連動して(例えば、A4縦の紙を2枚テープで貼り付けた様な)扱う方法って在るのでしょうか?2枚の紙の張り合わせ部分は多少の張り合わせあとが残っても構いません。何か?いい案はありませんか? 今調べてみたら、二つのシートを張りあせることは出来ても、別のシートをシンクロさせたりするのは、Excel 2003 だけでした。 それで、少し、異なるシートの垂直同期用のマクロを考えてみました。 'シートモジュール(Sheet1 と Sheet2) '----------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) '擬似的垂直同期 If ActiveWorkbook.Windows.Count = 1 Then Exit Sub If ActiveWorkbook.Windows(1).ActiveSheet.Name = Me.Name Then i = 1: j = 2 Else i = 2: j = 1 End If ActiveWorkbook.Windows(j).ScrollRow = ActiveWorkbook.Windows(i).ScrollRow Application.ScreenUpdating = True End Sub '-------------------------------------------------- '標準モジュール '================================================== Sub WindowsDeviding() 'Windows分割用 With ActiveWorkbook .Sheets(2).Select If .Windows.Count = 1 Then ActiveWindow.NewWindow Else Exit Sub End If .Windows(2).Activate .Windows.Arrange xlArrangeStyleVertical .Sheets(1).Select .Windows(2).DisplayVerticalScrollBar = False End With End Sub Sub WindowsReAdjustment() '分割解除用 With ActiveWorkbook .Sheets(2).Select If .Windows.Count > 1 Then .Windows(1).Close End If With ActiveWindow .Left = Application.Left + 10 .Width = Application.Width - 10 .Height = Application.Height - 100 .DisplayVerticalScrollBar = True End With .Sheets(1).Select End With End Sub
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの列数や行数限度はエクセルの現状の仕様の深いところを規定しているところで、あるはずです。影響が非常に大きいはずです。メモリも大幅に増やさないと、データがセルに実際に入れられた場合スムーズに動かない恐れがあります。関数もそれなりの数を入れると スピードが心配です。今までのエクセルのシートやソフトとをうまく動かすことも課題です。 コンピュタハード・ソフトについて、昔から見てきたものにとって、 現状でもありがたいという気がします。 当初は80欄(80文字)のパンチカードから始まり、それを数枚分論理的につなげた形にして利用していたところから始まりました。 また「エクセルが万能(」とはプロは決して思っていないようです。エクセルからコンピュターに入って、それしか知らないような人が、「なんでもエクセル」という風な使い方(それもビジネス分野ですが)をした質問が結構あります。エクセルは一般言語でなく、ゲームに使うために、エクセルが不便といわれても、設計者は面食らうでしょう。特にビジネスで1000列も必要な場合は、何か、設計に問題があると推定せざるを得ません。 >どなたかご存じないでしょうか 過去にも何度か出た質問です。知る知らないの問題ではありません。 マイクロソフトが、制限として公言している問題です。裏技なども載っていません。 >10進数的には)中途半端な、65,536行 中途半端ではありません。 2進数的には16ビットというれっきとした理由をもってます。 256行は8ビットの表せる数を暗示してます。列を増やすとマイクロソフトが検討すると、次は65536にするか(これは多すぎるかな)どうか、半端な12ビット(4096)などにすると、メモリのロスが出るのはないかと素人ながら思います。(この点はインサイド・エクセル(メモリの内部の動きまでの設計思想を精通している方の知識)には小生は無知ですから、忘れてください)
お礼
ご指導有難うございます。 >中途半端ではありません。 >2進数的には16ビットというれっきとした理由をもってます。 については、承知していることを、 >行数は2進数が関係するため(10進数的には)中途半端な、という表現で承知していることを表したつもりだったんですが???説明不足ですみません。 256、512、1024も一緒ですよね? ゲームは使い方の一例であったのですが・・? 行が65,536行あるならば、列があっても良いのでは?と思っただけで、ここは、そんなに論理的な考えに基づいて質問しなければならないって思わなかったので安易な質問で気分を害したみたいですみませんでした。 ただ、僕が考えていた使い方では、行は256に制限されても良いので、列を増やしたいと思ったもので別の言い方をすれば、行を列として表示、列を行として表示する方法でも構いません。 確かに、マシン語では、12ビットって扱いづらいですよね?レジスターも8ビットや、16ビット、32ビットですし!!結局は、メモリー的には、12ビットは16ビットとして扱った方が処理の面で効率が良いですからね?20年ぐらい前ですと、ユーザーエリアのメモリーが極端に少なかった(Z80の場合では、32K程度だったと記憶しています)ため、メモリーを切り替えて使用した自体では、処理速度よりも、処理の実現の方が問題になり、12ビット的なデータ、アドレス処理もあったようですが、現在では、事実上(アドレスなどを12ビット、16ビットとして扱う必要があるかどうかの観点からして)無限のメモリーがあると考えても良いようなので、(でなければ、今みたいなオブジェクト志向ってのはメモリーの効率が悪すぎて使い物にならない?ってことになると思います)アドレスの扱い方から256列に制限されているのではないと思いますが?違っていましたらごめんなさい。 詳細なご指導有難うございました。今後ともよろしくお願いいたします。
補足
パンチカードってことは、フォートランを扱われていたのですか?銀行系?のお仕事をされていたのでしょうか?僕は、αフォートランしか、かじったことがありませんが、あれも難解ですよね?アメ車と一緒で、手のかかるのが可愛かったです。技術評論社から出ていた、PC8801テクニカルノウハウって本を片手に、CALL関数でメモリーを直接操作していた時代を思い出しました。 今では、コボルもフォートランもすっかり影がなくなってしまいましたね?ニモ二ックやアセンブラ、逆アセンブラなんて言葉はもう出会うことはないんでしょうね?結果的に何も出来なかったけど、出来ることは思い通りになんでも出来た時代が懐かしく思います。 今後は、Visual Stadioの勉強もした方が良いのでしょうか?
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。Wendy02です。 横 2^8 = 256 縦 2^16 =65536 前にも、どこかで書いたけれども、通常、1,000列であろうが、2,000列であろうが、シートをまたいで使えばよいです。そういう使い方があります。両方のシートのスクロールをシンクロするマクロを入れるわけです。 また、Webコンポーネントのスプレッドシートコントロールなら、702 (ZZ)まであります。 ですが、経験的に、いままで、人の作った表計算で、横長に使いたいというので見せていただいたのは、だいたい、少し考え方を変えたほうがよいことが多いようです。 ゲーム?それは、私ははわからないですね。
補足
いつも有難うございます。本当におかげですこしづつではありますが、マクロが進んでいます。(思考錯誤はしているのですが、覚えること(知らないこと)が多すぎて四苦八苦しています。imogasi様にもご指摘を受けたのですが、この問題に限り、エクセルを表計算ソフトとして扱おうってものではありません。トグルボタンと罫線のみを使い、トグルボタンを押したときに罫線を変化させて、系統的な相互関係を表すようなマクロを組んでいました。(たまたま、前回は256列ぎりぎりで抑えることが出来たのですが?)系統的な関係が肥大した場合にどうしても256列では処理できなく(セルをCADで言うグリット見たいにして扱うため)なります。使い方が間違っていると言われると何もいえなくなるのですが、高機能なエクセルを表計算だけの使い方しかしないのももったいないと思います。(参考に、前回作ったのは、256列が1450ドットのディスプレイに全体表示して使います。(セルに入力されている値は見ません)で、例えば、2つのシートをブックのウィンドーの中で、横方向に連続連動して(例えば、A4縦の紙を2枚テープで貼り付けた様な)扱う方法って在るのでしょうか?2枚の紙の張り合わせ部分は多少の張り合わせあとが残っても構いません。何か?いい案はありませんか?無理難題を質問してすみません。 時間の許す範囲でご指導願えれば幸いです。 よろしくお願いいたします。(長文ですみません)
- ASIMOV
- ベストアンサー率41% (982/2351)
>擬似的に2つ以上のシートを連続して(区切り線も何もなく使う方からすれば1000ぐらいの列があるように)使うことは可能なのでしょうか? 具体的に何をしたいのかを書かれたほうが、回答が得られやすいと思います 列を増やす以外の解決方法が有るかも知れませんし...
補足
ご指導有難うございます。 Wendy02さんの欄にだらだらとやりたいことを書きましたが(説明能力が極端に悪くて・・・すみません)、気持ちが通じたでしょうか? Wendy02さんの欄の補足として、このスイッチを押したらこっちが動いて、このスイッチが押されていないとこっちのスイッチが押せない(専門用語では、インターロックって言います)のシミュレーターを罫線とトグルボタンで作って実際に回路を組もうと言うものでした。よってセルのVALUEはまったく意味がありません。やはり、使い方が想定の範囲外ってことなのでしょうか? 時間の許す範囲でご指導願えれば幸いです。よろしくお願いいたします。
- OsieteG00
- ベストアンサー率35% (777/2173)
列数はA~IVまで256までです。これはエクセルの上限であり増やしようがありません。 列数は、テーブルの正規化により減らした方がよいです。つまり、データ構造そのものを見直さなければならないということ。繰り返し部分があれば、それは正規化するのが本道です。 ちなみに、どんなに高級なデータベース(例:Oracle9等)でも、列数は1000ぐらいが限度です。
補足
早速のご指導有難うございます。 エクセル本来の使い方からすれば、無考えに列数を増やすことを避けるべきだという、OsieteG00さんのご意見は、もっともだと思います。しかし、エクセルが万能(いろいろなご意見があると思いますが?)であるゆえ、たとえば、ゲームなどで使おうと考えると256では狭いことがあります。1シートの列数が256であることは仕様だとして、擬似的に2つ以上のシートを連続して(区切り線も何もなく使う方からすれば1000ぐらいの列があるように)使うことは可能なのでしょうか? 重ね重ねの質問で恐縮ですが、よろしくお願いいたします。
お礼
重ね重ねのご指導ありがとう御座います。 いつもながら素晴らしいですね!どれだけVBAの勉強をすれば、Wendy02様のようになれるのかとふと考えてしまいました。と、同時に昔大ヒットした、ルービックキューブの世界チャンピョンが日本人で、その人はキューブ操作の基本形が何百と入っていて、瞬時にその最適な組み合わせを導き出すそうです(確か?400だったか?4000だったか?)Wendy02様もきっと同じで、思いつくのは瞬間で、VBAを入力(記述)する方が何倍も時間がかかるんでしょうね?恐れ入ります。 今回ご指導頂いた内容は、時間をかけてジックリと読んで自分のものにしていきたいと考えています。 本当に、ありがとう御座いました。今後とも宜しくお願い致します。