• ベストアンサー

Microsoft Excelの限界を乗り切る方法について

今まで、ExcelのIF関数や不等号記号、MAX、MINなどを使って、セルの値の変化に応じて分析(今までは、せいぜい1万行だった)をしていたのですが、今回、300万行超えのデータを扱う事になり、Excelの限界地が65536行で、とても困っています。何か、良い方法は無いでしょうか? 何卒、ご教示、宜しくお願い致します。 A1  =44 A2  =30 A3  =97 以下、実数値が300万行ほど続きます。 B1  =IF(A2>20,A1+A2,A1+A3) B2  =IF(A3>20,A2+A3,A2+A4) B3  =IF(A4>20,A3+A4,A3+A5) 以下、同様に続きます。 C1  =IF(B1*A3>14000,B1,FALSE) C2  =IF(B2*A4>14000,B2,FALSE) C3  =IF(B3*A5>14000,B3,FALSE) 以下、同様に続きます。 実際は、D,E,F,G,H,I,Jにも様々な計算式が入っています。 実際に、作成したExcelの表です。   A    B    C 1  44   74    FALSE 2  30   128   FALSE 3  97   131   140

質問者が選んだベストアンサー

  • ベストアンサー
  • haccyan
  • ベストアンサー率43% (27/62)
回答No.3

こんばんは。 かなり邪道で、本来の使い方じゃなくて良いなら、 sheetを列の代わりと考えて、1枚のsheet全体を行とするなら、 65,536 行 × 256 列 = 16777216 となり、1670万行に及ぶデータを扱うことができます。 後は、このデータを★《串刺し計算》★してみてください。 いちいち、別のシートを参照した式を書かないといけないのと、 データが途中から隣の列に移るのがわかりにくいですが、 そもそも、300万行オーバーなんて巨大なデータを扱うなら、 こんな掟破りな方法でもやってみてもいいんじゃないでしょうか。 sheet枚数の最大値は、「使用可能メモリに依存」だそうです。 ところで、計算にかなり時間がかかるか、途中で固まるとか、 不具合が出ても、あしからず。

chitose_houjo
質問者

お礼

回答いただきありがとうございます。 串刺し計算について調べてみます。 ありがとうございました。

その他の回答 (2)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

エクセルにオラクルなどのSQLを連携させる。 MySQLやPostgreSQLは無料DBです。 でもエクセルだと全行表示できませんね。

chitose_houjo
質問者

お礼

回答いただきありがとうございます。つまり、データベースソフトを用いれば解決できるという事ですね。ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

だいたい、300万行のデータをExcelのワークシートで(仮にExcelではなくても)扱うということ自体が、無理ですから、それは、Excelのワークシートという枠を外して考えるしかありません。Accessに入るかもしれません。 もちろん、どうしてもExcelのワークシートに出したいというなら、別ですが。 元のデータのフォーマットが書いてありませんが、だいたい、Textベースでしょうから、後は、配列データにするか、行だけを抽出するかして、VBA(VB)などで計算して、そのままワークシートに出さずに、テキストに出力すればよいのではありませんか?

chitose_houjo
質問者

お礼

回答いただきありがとうございます。 つまり、プログラムを自作でがんばると・・・ う~ん。。。ちょっと、考えてみます。

関連するQ&A

  • EXCELのFALSE行削除について

    EXECLでif文実施結果でFALSE行が発生してしまいます。 この行を自動で消す方法はありますでしょうか? マクロで実施する方法でもご存知でしたらご教授願います。 例 sheet1               sheet2   A  B  C  D            A      B      C      D 1 11 12  a  x         1 11     12      a     あいう      2 11 12  b  x   ⇒     2 FALSE FALSE   FALSE   FALSE 3 11 12  a  x         3 11     12      a     あいう 4 11 12  b  x         4 FALSE FALSE   FALSE   FALSE sheet2A1にif=('sheet1'!C1="a",'sheet1'!A1) B1にif=('sheet1'!C1="a",'sheet1'!B1) C1にif=('sheet1'!C1="a",'sheet1'!C1) D1にif=('sheet1'!C1="a","あいう") として、これを1行目のif文を下にコピーして使用しています。 又、もっと効率のいい方法がある! と言った答えもいただけたら非常に助かります。 よろしくお願いします。

  • EXCELのVLOOKUP関数の特殊な使い方を教えてください。

    初めて投稿しますので、宜しくお願いします。 最近会社でエクセルの表を作って欲しいと言われたんですが、元々エクセルとかはあまり得意ではないので苦戦しており、いろいろ調べても解決できなかったのでこちらでご相談させていただきます。 質問内容 EXCELにて型式一覧の表から当てはまる値を自動的に抜き出したい。 セルは以下の通りです。  |  A   |  B  | C | D |  |------|-----|-------| 1 | 型式番号 | 型式  |   値   |  |------|-----|-------| 2 |      |     | max | 10 |  |      |     |-------| 3 |  01   |  a  | min | 20 |  |      |     |-------| 4 |      |     | ave | 30 |  |------|-----|-------| 5 |      |     | max | 40 |  |      |     |-------| 6 |  02   |  b  | min | 50 |  |      |     |-------| 7 |      |     | ave | 60 |  |------|-----|-------| 8 |      |     | max | 70 |  |      |     |--------------| 9 |  03   |  c  | min | 80 |  |      |     |-------| 10|      |     | ave | 90 |  |------|-----|-------| 検索用  |  A   |  B  | C | D |  |------|-----|-------| 15| 型式番号 | 型式  |   値   |  |------|-----|-------| 16|      |     | max▼| 10 |  |------|-----|-------|  上記の検索用のセルに入力したときに自動的に表示できるようにしたいのが今回の質問です。 手順と条件 1.A16の所は型式番号入力する(キーボードやテンキーなどで直接入力) 2.A16のセルに001と入力するとB16に自動的に【a】と表示される(VLOOKUPで処理しています。) 3.次にC16のセルでは入力規則リスト型にして、中の値は【max,min,ave】の3つだけを表示。 4.C16のリストから【max】を選ぶと型式番号001の型式aの値maxに対応している【10】という値が自動的D16に表示される。 5.A2~A4はセル結合。同じようにB2~B4までセル結合しております。 上記のような事は出来るのでしょうか? 説明下手で申し訳ございませんが、何卒宜しくお願い致します。

  • excel エクセル関数 min max の使い方について質問します

    excel エクセル関数 min max の使い方について質問します セルA1とB1にある二つの数字を比較して小さい方を選びたい時は例えば =min(A1,B1) をC1に数式を入力すればで計算でき、大きい方を選びたいときは =max(A1,B1)で計算できることまでは学習できました A1 に 1 B1 に 2 で C1 に =min(A1,B1)と式を立てると C1 に 1 と返されることは判りました では片方に「0」ゼロがある時、「0」を選ばずに自動的に値のある方を選ぶにはどんな関数の書き方をすれば良いでしょうか? A1 に 1 B1 に 0 で C1 に =min(A1,B1)の式に何を加えれば C1 に 1 と返されるでしょうか? 行数A1からA1500くらいまでありますので 「0」の時だけ別な式を立てる訳には行かないので困っています はて? 初心者です ヨロシク御教示願います <m(__)m>

  • Excelについて教えて下さい。

    Excelについて教えて下さい。 A列1行目=Price B列1行目~X列1行目までPriceに関する計算式の雛形が入ってます。 A列2行目=値引き B列2行目~X列2行目まで値引きに関する計算式の雛形が入ってます。 A列3行目に、Priceか値引きの文字を入力するだけで、B列3行目~の計算式を雛形から持ってくることは可能でしょうか? sample) A列 B列 C列 雛形1 Price =IF(E2="st",100%,"-") =IF(D2="","",VLOOKUP(D2,Total!$A$1:$D$416,4,FALSE)) 雛形2 値引き =IF(E3="st",100%,"-") =VLOOKUP(D3,Total!$A$1:$D$416,4,FALSE) A列  B列            C列 Price 雛形1の計算式を 雛形1の計算式を ↑Priceと入力すると、右のB列以降に雛形1の計算式を持ってくる。 値引きと入力した場合は、雛形2の計算式を持ってくる。

  • エクセルの参照セルがずれないようにしたい!

    エクセルの参照セルがずれないようにしたい! sheet1のC列にデータを入力しており、sheet2には A1に =IF(ISERROR(FINDB("○○",sheet1!C1,1))=FALSE,"△△","××") A2に =IF(ISERROR(FINDB("○○",sheet1!C2,1))=FALSE,"△△","××") A3に =IF(ISERROR(FINDB("○○",sheet1!C3,1))=FALSE,"△△","××") ・ ・ ・ ・ ・ ・ ・ ・ と、計算式を入れています。 sheet1で行の挿入をすると、sheet2の計算式が何故かずれてしまいます。「shhet1!C1,1のところの行番号」 これをずれないようにするにはどうしたらよいのでしょうか? =IF(ISERROR(FINDB("○○",Indirect(sheet1!C1),1))=FALSE,"△△","××")としても行番号はずれるし、期待する結果(sheet1のC列に○○という文字があればsheet2にA列に△△と表示したい。)が返ってきません。 説明が下手でわかりづらいとは思いますが、ご回答よろしくお願いします。

  • エクセルである範囲の中での最大値、最小値を簡略に抽出する方法について

    はじめまして、この度はよろしくお願いします。 エクセルで例ば A列        B列        C列 0.0367659      a 0.033633907 0.025824788 0.020930498 0.011846518 0.006997131 0.002075281 -0.001972752   b -0.005546433 -0.009688783   c -0.014273939 -0.019588186 -0.023865392   d のように並んでいたとして、B列のa~b、b~c、c~d、の範囲の中でA列の最大値または最小値を求めたいのですがどのようにすればよろしいのでしょうか?(実際はabcdには数字が入ります) 今まで当方はC列に文字関数のmax,minを使い一箇所づつ範囲を指定しながらやってきたのですか、時間が膨大にかかってしまいます。 簡略に抽出できる方法があれば教えてください。

  • Excel IFの限界

    エクセルを使用しています。 IFを使用したとき、IFを取り返したときにエラーになってしまいます。 IFには限界があるのでしょうか。 =IF(C6=999,"次年度",if(c6=888,"保留",if(c6=777,"実習中",if(c6=666,"未履修",if(c6=555,"保留・課",if(c6=444,"不認定",IF(C6>79,"A",IF(C6>69,"B",if(C6>59,"C",if(C6>59,"D",if(C6=0,"-","不認定")))))))))))

  • エクセル範囲をワード12行目に貼り付け

    お世話になります。 エクセルではいろいろとやっていますが、ワードにはあまり。。。 下記のコード部分でエクセルからワードの12行目のところに 貼り付けをしたいのですが。。。   If Range("D36") = "再調査" Then Range("A1:B10").Copy End If If Range("D36") = "終了" Then Range("A1:B9").Copy End If oWord.Selection.PasteExcelTable False, False, False 貼り付け場所の指定のやり方をワードでは分かりませんので、 ドキュメントの1行目に入ってしまいます。 ご存知の方いらっしゃったら教えてください。 宜しくお願いします。

  • Excel +記号

    A1とB1に小数点以下第二位までの数字が入っています。 C1にA1-B1の結果を表示させたいのですが、 正の数だった場合に+記号を付けたいと思い、 =IF(A1-B1>=0,"+"&A1-B1,A1-B1) としましたが、 これだと4.00のようなときに+4とだけなってしまいます。 +記号を付けて、なおかつ小数点以下第二位まで表示するにはどのようにすればいいですか?

  • ×または空白のセルを繰り上げて表示する(エクセル)

       果実シート                  まとめシート      A   B    C         A    1  いちご  林檎  ミカン          2   ○   ×    ○ 3   4  イ 5  ロ 6  ハ 2行目には○か×か空白が入ります。空白は×と同じです。(以下×という定義は「×または空白」という意味とします。) ・4行目イの欄=A2が○であれば「いちご」を。A2が×でありB2が○であれば「林檎」を。A2、B2が×でありC2が○であれば「ミカン」を ・5行目ロの欄=A2が○でB2が○であれば「林檎」を。A2が○でB2が×、C2が○であればミカンを。A2が×、B2が○、C2が○の場合はミカンを。 ・6行目ハの欄=すべて○の場合だけミカンを。 つまり、×または空白表示の場合は、順次繰り上げて表示する方法についてご教示ください。 4行目は=if(a2="○",a1,if(b2="○",b1,if(c2="○",c1)))ということでOKだと思いますが、5行目6行目がどうしてもわかりません。 マクロをメンテナンスできる人間がいないため、ifやandなどの関数だけでお願いします。 また、このイロハの部分を別の「まとめシートに」リンクさせ、これをVLOOKUP($G$2,まとめシート!A1:R50,1,FALSE)という形(G2は任意の数字を入れる場所)でさらに別のシートへリンクすることは可能でしょうか。 エクセルバージョンは2002です。

専門家に質問してみよう