• ベストアンサー

エクセルでデータの間引き

エクセルでグラフの作成をしようと試みたところデータ数が 10000程あったため途中までのデータしかグラフ化されません。 そこで、データを10あるいは100行おきに間引きをしてグラフの作成を行いたいのですが、エクセル上で簡単にこのような操作を行うためにはどのようにすればよいのでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

Excel2007からは事情が変わっているそうですが、それ以前のバージョンの場合です。下記のコードで、試してみました。test()でデータを作成し、ctrl+shift+:で、全データを選択して、グラフを描かせてみました。 その後、test2のコードで、途中の行を非表示にしてみました。 Sub test() Dim i As Long Application.ScreenUpdating = False For i = 1 To 65536 Cells(i, 1) = i Cells(i, 2) = i ^ 2 Next i Application.ScreenUpdating = True End Sub Sub test2() Rows("100:65500").Select Selection.EntireRow.Hidden = True End Sub 分かったこと(Excel2000ですが、2003までは一緒だと思います) Excelがグラフ化してくれるのは(65536/2)個まで。 途中の行を非表示にすると、最後のデータまで表示してくれる。 以上から、例えば10行おき、100行おきに作業列に目印を置いて(例:*)、オートフィルターにより、目印のついた行だけを表示してはいかがでしょう。 ただ、32000個を超えるデータでは重くてしかたがないと思います。当方、65000個を超える様なデータの場合に、Accessのmdb形式のデータファイルにして、必要なデータだけワークシート上に抜き出して、グラフ化等行っています。こちらは一口では説明できませんので、リンク先をご覧下さい。

参考URL:
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130.html

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

対象以外のデータは捨てるわけには行かないから (1)抜き出し(関数、VBA、フィルタなど) 例えば13個おきにサインを立てるのは =IF(MOD(ROW(),13)=0,"1","") 連番を振るのは=IF(MOD(ROW()-1,13)=0,MAX($C$1:C13)+1,"") この後連番を振ったものを別シートに取り出す方法は、imogasi方式 でGoogleで照会してみてください。私がこのコーナーでした抜き出し問題の多数の回答の中に書いています。(昨日もありました) (2)非表示(幸いグラフは非表示のデータは対象にしないので)にする しかしこれ(非表示)は関数では絶対どうにもならない。VBAがいる。 小数なら手作業でやれる。 13行ごとに表示の例なら(実行時間は少しかかる) 下記を実行して非表示にできる。下記コード内で13のところを 適当に変える事。 標準モジュールに Sub test01() Application.ScreenUpdating = False For i = 1 To 10000 If Cells(i, 1).Row Mod 13 = 0 Then Else Cells(i, 1).EntireRow.Hidden = True End If Next Application.ScreenUpdating = True End Sub

関連するQ&A

専門家に質問してみよう