• ベストアンサー

データ抽出について

Excelに1秒間隔に取得したデータが1万行以上あります。 この1秒間隔のデータを1分間隔で間引きしたデータに変換したいと 思っているのですが、容易に間引く方法を教えてください。 60行間隔で手動削除するには行数が多くて困っております。

  • gazo
  • お礼率30% (74/241)

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

#1です。 補足です。 =SMALL(IF(IF(MOD(ROW($A$1:$A$10000),60)=0,$A$1:$A$10000,"")<>"",$A$1:$A$10000,""),ROW()) は、配列数式です。A列に抽出したいデータがあるとします。B以下行1に入力したら、Shift+Ctrl+Enter 押してください。 {=SMALL(IF(IF(MOD(ROW($A$1:$A$10000),60)=0,$A$1:$A$10000,"")<>"",$A$1:$A$10000,""),ROW())} になります。以下、下方へフィルドラッグしてください。 なお、「=0」を「=1」などに変えれば、抽出の行が変わります。

その他の回答 (2)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

こんな感じでどうでしょう? Sub test() Const FirstRow = 2 'データの先頭行 Dim r '行カウンタ r = FirstRow Do While Application.WorksheetFunction.CountA(Rows(r)) Rows(r + 1).Resize(59).Delete r = r + 1 Loop End Sub

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

基本的には下記でいいと思うが、データがない領域ではエラー値が表示される。これを避けるには、エラーなら""にしろと書けばいいが長くなる。 =SMALL(IF(IF(MOD(ROW($A$1:$A$10000),60)=0,$A$1:$A$10000,"")<>"",$A$1:$A$10000,""),ROW())

関連するQ&A

  • VBAのデータ抽出(間引き)について

    VBAのデータ抽出(間引き)について 当方VBA初心者なのですが、 VBA(EXCEL2007)を使用してグラフ作成をしようと思っています。 元データの書式は以下の通りでデータ行は30秒間隔で 一カ月分(8万行)あります。 2010/08/01 01:00:34     1112.83 2010/08/01 01:01:04     1110.43 2010/08/01 01:01:34     1111.87 2010/08/01 01:02:04     1112.23 2010/08/01 01:02:34     1112.43 2010/08/01 01:03:04     1112.03 2010/08/01 01:03:34     1110.83 2010/08/01 01:04:04     1112.43 2010/08/01 01:04:34     1110.63 ・・・ データ量が多すぎるので間引きしようと思っています。 間引き(抽出)条件は以下の様に考えています。 10行毎(5分毎)に値の最大値の行を抽出して別シートへコピー。 VBAマクロで処理するにはどの様な コードで実現可能でしょうか? 教えて頂きたく。よろしくお願いします。

  • エクセルで最大値最小値を残して間引きをしたい

    エクセル2000を使用しています。 電圧と温度の数値データが100列×20万行のCSVで保存してあります。 このデータを解析の為エクセルで読み込みたいのですが、 データの行数が多い為読み込めません。 そこでデータを間引いて取り込みたいのですが、過去ログやWEBには 「数行毎に削除して取り込み」しか見つけられませんでした。 これではピーク値を削除してしまう可能性があるので、 10行毎に最大値と最小値を残して削除をしたいです。 例 1 7 2 8 3 9 4 10 5 11 6 12 これを3行ごとに間引き 1 7 (1~3行の最小値) 3 9 (1~3行の最大値) 4 10 (4~6行の最小値) 6 12 (4~6行の最大値) のように間引きをしたいです。 大きなCSVを複数のシートに分割して読み込むマクロは組めたので、 CSV読み込みからでは無く、エクセル上で上記のように間引きが 行えるだけでも大変助かります。 よろしくお願いします。

  • エクセルの時間デ-タ-抽出

    エクセルの時間軸による測定デ-タ-を、10分間隔で抽出したい。 デタ-行数は約60,000有ります、 時間は13:15:10 から3秒間隔で記録されています。 検索で「**:*0:0*」と10分間隔で「次の検索」でコピ-&ペ-ストでは時間が掛かり過ぎます。 「デタ-」→「オ-トフィルタ」で「**:*0:0*」と行っても出来ません。 時間デ-タ-の抽出は無理なのでしょうか? よい方法が有ればお教え下さい。

  • ファイルメーカーでデータを抽出とインポート

    CSVファイルをファイルメーカーにインポートする場合、ある条件で抽出しながらインポートできるでしょうか。 ショッピングカートからダウンロードした注文データをファイルメーカーに取り込みたいのですが、データにいつも項目名のヘッダがついているので、それを除外しながらインポートしたいのです。 (数日分のCSVファイルを結合して1つのファイルにしてインポートすることもあるので、ヘッダは先頭行だけでくデータの途中にも存在することがあります) 前まではEXCEL等で不要な行を削除してからやっていたのですが、いちいちEXCELを起動すると手間がかかるし、手動削除はミスも起こりやすいのでなるべくEXCELを介するのはやめたいと考えています。 (そもそもEXCELでやっていた業務をファイルメーカーに移行するためにファイルメーカーを購入したのでEXCELはやめ、ファイルメーカーに統一したいのです) よろしくお願いします。

  • Excel 2007で6万5536行以上のデータ

    Excel 2007では、最大列数が従来の256列から1万6384列に,最大行数が従来の6万5536行から104万8576行に増えたと聞きました。私のExcelは、2007ですが、最大行数は6万5536行のままです。 どうしたら、6万5536行以上のデータを扱えるようになるのでしょうか? 何らかの設定変更で可能になるのでしょうか?

  • エクセル画面右端のスクロールバーについて

    エクセル画面右端のスクロールのバーについて、新たにエクセルを開いた時はデータが入っていませんので、このバーは長いですけど、データの入った行数が多くなれば(もしくは手動で下の方にスクロールさせていけば)短くなっていきますよね。 例えば、10000行のデータがあるとし、そのバーがかなり短い状態だとします。その状態で9000行を削除して、残り1000行になっても、バーの長さが短くなりません。(10000行のデータが入っている時と同じ長さです) 恐らくそのような状態のせいで、シートのサイズが膨大になっているため、読込や保存でかなり時間がかかってしまいます。(現に、試しにシートを削除すれば2.5Mぐらいサイズダウンしました。) このバーを常に適切な長さに保っておく方法、もしくは行数が大幅に減った際に、バーを適切な長さに戻す方法を知っていらっしゃいましたら、ご回答宜しくお願いします。

  • Accessでデータを「間引き」するには?

    Microsoftアクセスを使って電力使用量を管理するシステムを製作しています。 集計する基となっているデータは (1)CSVで出力されたファイル (2)縦に時間が30秒刻みで入力(0:00:00~23:59:30) (3)横にそれぞれの計測機器での計測値が入力 (4)1日1ファイルが生成され、日時を含んだファイル名で保存される 上の様なデータをアクセス上で管理&集計してグラフ化などを行いたいと考えています。 現状で機器が約100個あるので100列、30秒刻みで24時間なので2880行、1日で約300,000ものレコードが生成されています。 データの計測と出力はとあるメーカーの機器で行っているため、容易に仕様を変更することは出来ません。 このままだと長期使用を考えた際にデータ量が大きくなってしまうので、業務上必要なレベルまで集計して、外部ファイルとして保存し必要な際に取り込むという手法を検討中です。 具体的には、現在の30秒間隔でのデータを1分または2分間隔まで間引きしたいと考えています。 このデータを1ヶ月単位でまとめ外部ファイルに出力し、必要な際に取り込ませます。 それぞれのデータは30秒間隔の差分なので、1分または2分にまとめるには2行または4行分のレコードの和算をしなければなりません。 1日単位で出力されたデータを1ヶ月単位でまとめるのは単純に追加クエリを使って可能ですが、上記の様な集計は可能なのでしょうか? 1分間隔ならば、「時間」フィールドの「分」の桁まで一致するレコードをグループ化という方法もあるかと考えましたが「時」の桁が 1桁の場合(0時~9時まで)と2桁の場合(10時以降)があるので、上から○桁目まで一致するものをグループ化して合計を出すという方法も使えません。 (そもそもそんなグループ化の手段があるかどうか知りませんが...) 何かよい方法はありますでしょうか? よろしくお願いいたします。

  • データの抽出

    エクセルの使用方法で、質問です。 一つのファイルに入っているデータB  ×××   ○○○   △△ 1------   ------   ---- 2------   ------   ---- 3------   ------   ---- 4------   ------   ---- ・ ・ ・ と、もう一つのファイルに入っているデータA  ×××   ○○○   △△  ■■■ 1------   ------   ---- 2------   ------   ---- 3------   ------   ---- 4------   ------   ---- ・ ・ ・ の△の行のマッチングを行い、重複している列に、データBの該当している列のコピー■の行に 書き出したいのですが、何かいい方法はないでしょうか。 よろしくお願いいたします。

  • 特定のデータ抽出

    お世話になります。次の機能を実現するエクセルのマクロについて、質問させていただきます。 1)毎日、30件のデータが取得され、A列に追加保存されます。 2)その日取得された30件のデータの中から、A列にある過去のデータを参照し、重複したものは削除する 3)重複削除後のその日のデータをC列に表示させる。 *表示させたいのは、その日のデータです。 単独で、重複データを削除させるマクロは作成できたのですが、過去のデータを参照し、それを処理させる 方法がわかりません。よろしくお願いします。

  • エクセルVBAでデータ最終行取得方法

    エクセルVBAでデータ最終行取得方法で良い方法を教えてください。 データの行数、列数は不定。 最多のデータ行の列も不定。 この条件で、データ最終行を取得するにはどうすればよいでしょうか? lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row では、A列の最終行に限定されます。 lastrow = ActiveSheet.Cells(1, "A").SpecialCells(xlLastCell).Row では、列の限定はありませんが、一旦データ入力後、削除した部分まで入ってしまいます。 lastrow = ActiveSheet.UsedRange.Rows.Count では、データ入力後、削除した部分まで入ってしまい、かつ、1行目など上部が空白の場合、不正確になります。

専門家に質問してみよう