エクセルでA列のデータを30分ごとに別の列にコピーする方法

このQ&Aのポイント
  • エクセルでA列のデータを30分ごとに別の列にコピーする方法について解説します。測定機器のカウンターからRS232C経由でエクセルにデータを書き込んでいくソフトがありますが、このデータをリアルタイムでグラフに観測したいと思っています。
  • VBAを使用することで、A列のデータを1分ごとにD列とE列に30分間分コピーすることができます。コピーが終了したら、データをすべて消去して新たに30分間分のデータをコピーします。また、データの中から特定の5桁のみをコピーすることも可能です。
  • この方法を使えば、エクセル上でリアルタイムのグラフ観測が可能です。VBAの知識が必要ですが、詳しい手順を解説しますので、ぜひチャレンジしてみてください!
回答を見る
  • ベストアンサー

エクセルでA列のデーターを30分毎に別の列にコピー

測定機器のカウンターからRS232C経由でエクセルにA1、B1から順番にA1 B1,A2 B2、A3 B3とその時刻とデーターを書き込んでいくソフトがあります。A列の最後まで行くとそこで終了です。 この1分毎のデーターをリアルタイムでたとえばD列とE列にその時刻とデーターの30分間分をVBAを使ってコピーしたいのです。30分終了したら全部消去してまた新たに30分間分をコピーする。この繰り返しです。目的はこのD列とE列のデーターでリアルタイムのグラフにして観測したいと思っています。こんなことがVBAを使って出来るのでしょうか。また、実はこのデーターは15桁ありその中の9桁目から5桁目までの5桁だけコピーしたいのです。私には敷居が高すぎてとても解決できません。どうかよろしくお願いします。この記録されるエクセルにはVBAとかの記録は特に無いようです。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

関数で対応できるでしょう。 A1セルとB1セルから下方に1分ごとにデータが自動的に追加されていくとします。 なお、B列のデータは15ケタで9ケタ目から5ケタ目までをE列に抽出したいとのことですね。 D列とE列への最初のデータの取り込み時刻を8:00からとしたい場合にはC1セルに9:00と入力します。C1セルには必ず時刻を入力します。 その指定した時刻からスタートして30分ごとに表が自動的に変わるようにします。A列でのデータの最終行を判断してD列およびE列のデータが自動的に変化します。 D1セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>30,"",IF(INDEX(A:A,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(A1)-1)=0,"",INDEX(A:A,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(A1)-1))) E1セルには15ケタの数値の内の9ケタ目から5ケタ目までの数値を表示するために次の式を入力し下方にドラッグコピーします。 =IF(ROW(B1)>30,"",IF(INDEX(B:B,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(B1)-1)=0,"",MID(INDEX(B:B,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(B1)-1),7,5)*1)) なおE列のセルの表示形式は標準にします。

kirakira3jp
質問者

お礼

早速に回答ありがとうございました。 やりたかったことが出来ました。関数を使うんですね。私から見たら正に天才としか言いようがありません。ありがとうございました。

その他の回答 (2)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

>時刻とデーターを書き込んでいくソフトがあります このソフトの動作を制御できないようであれば、難しいと思われます ソフトの動作としては、 ”ソフト上でExcelの新規ブックを開き一定間隔でデータの書き込みを行なっている” こんな感じなんでしょうか? ・新規に作成されたブックにマクロを登録することが出来ない (ソフトで開くブックをマクロを含むテンプレートブックに指定することが出来れば可能?) ・他のユーザー(ソフト)が開いているブックを別のユーザ(ソフト)がアクセス出来ない (読み込み専用として開くことは可能ですが、新規作成されたブックは保存されるまでは読みこみ専用としても開くことは出来ないので、ソフト上で一定間隔で保存するような設定を行うことが出来れば可能) 上記2点がネックになります

kirakira3jp
質問者

お礼

早速の回答ありがとうございました。 エクセルだけの問題ではないのですね。単純に考えていました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>A1、B1から順番にA1 B1,A2 B2、A3 B3とその時刻とデーターを書き込んでいくソフトがあります そのソフトが自動的にデータを記入していくのなら、マクロにコピーさせずに例えば「常に最新の(いま入ってる一番下から)30行分をD:E列に数式で表示させ、それを元にグラフを表示」させておいた方が、簡単で安全です。 #ソフトが自動でデータを記入する都度、勝手にグラフが時系列を「流れていく」(30分ごとにワイプするのではなく)といった見え方になります #マクロが30分ごとに割り込みをかけるそのタイミングで、通信ソフトとバッティングしてデータ欠損みたいな事が起きる心配も無くなります 作成例:「30分」でどんだけデータが蓄積されるのか不明なので仮に30行分 E1に =IF(COUNT(A:A)>30-ROW(E1),INDEX(A:A,MAX(1,COUNT(A:A)-30+ROW(E1))),NA()) F1に =IF(COUNT(B:B)>30-ROW(F1),INDEX(B:B,MAX(1,COUNT(B:B)-30+ROW(F1))),NA()) E1:F1をE30:F30までコピー貼り付け E1:F30でグラフを描画。 A1:B1以下に順繰りデータが入る都度、下から上にデータが自動スクロールします。

kirakira3jp
質問者

お礼

早速の回答ありがとうございました。 どんな感じになるか試してみたいと思います。

関連するQ&A

  • Excelで1列のデータを5列に振り分けする

    Excel2003でA列に1行にあるデータ(半角英数字)を 次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロを作りたいです。 (ただし、コピーは2つずつの時もあります。) 元データ ●A列 B列 C列  1  2  3  4  5  ・  ・ 加工後 ●A列 B列 C列 D列 E列   1   1   2   2   3   3   4   4   5   5   上記のような感じです。ただデータは数字のみでなくて、英数字です。 Excelのマクロは全くの初心者で大変困っています。 どうぞよろしくお願いたします。

  • ExcelVBAで文字列編集後別シートのセルにコピーしたいのですが

    Excel2000を使用しています。作業中のブックのSheet1の後ろに別のファイルをコピーすることができました。そこから(コピーできたファイル)から文字列を編集してSheet1の特定のセルに貼り付けたいのですが、未熟者でできません。以下の操作をVBAマクロで実行したいのですが解る方教えてください。 (1)コピーしたファイルのA4セルにある文字列をMID(A4,6,10)で取り出しSheet1のB21セルに貼り付ける。(日付) (2)(1)が日付なのでそれから曜日を取得し、Sheet1のE21に表示する。 (3)コピーしたファイルのA5セルにある文字列をMID(A5,8,1)で取り出し(一桁の数字)1の時は福岡、2の時は佐賀、3の時は長崎、4の時は熊本、5の時は大分、6の時は宮崎、7の時は鹿児島、8の時は沖縄とSheet1のB24セルに表示する。 (4)コピーしたファイルのA6セルにある文字列をMID(A6,8,2)で取り出し(二桁までの数字)その後ろに"本"をつけてSheet1のB24セルに表示するB28に表示する。例)12本 (5)コピーしたファイルのA2セルにある文字列をMIDB(A2,20,6)で取り出し(時刻)Sheet1のE30セルに表示させる。 (6)コピーしたファイルのA12セルにある文字列をMID(A12,11,5)で取り出し(時刻)Sheet1のE34セルに表示させる。 (7)(6)の15分前の時刻をE36セルに表示させる。 よろしくお願いいたします。

  • Excel VBAにてデータのある列の指定とブック間コピーについて

    初めまして。Excel VBA初心者です。よろしくお願いします。 以下の表の状態で、たとえば、B列の2行目からデータが使用されている行(以下の例では40行目ですが、ブックの内容により行数が変化します)まで、別のブックにコピーする方法があれば教えて頂きたいです。 すみませんが、よろしくお願いいたします。 A B C D E ------------------------------- 1 あ い う え お 2 い う え お か     ・     ・ ・ 40 a b c d e

  • ある列のリアルタイム数値を3分毎に列をずらしながら記録するEXCELマクロを作りたい

    EXECL2002 SP3を使っています。 B2からB99まで数式が入力されています。 この数式の結果はリアルタイムで変わります。 このリアルタイムデータを、 記録するマクロを作成したいと考えています。 9時1分から20時1分まで3分毎にデータを取得し、 C列、D列、E列、と列をずらしながら記録していきます。 以下のようなイメージになります。 ☆数式の状態     A   B 1        =now 2    東京  =tokyo.temperature 3    千葉  =kanagawa.temperature 4    埼玉  =saitama.temperature ☆9時1分のシートの状態     A   B   C 1        9:01  9:01 2    東京  11.5  11.5 3    千葉  11.9  11.9 4    埼玉  10.8  10.8 ☆9時4分のシートの状態     A   B   C   D 1        9:04  9:01  9:04 2    東京  11.6  11.5  11.6 3    千葉  12.1  11.9  12.1 4    埼玉  11.0  10.8  11.0 ☆9時7分のシートの状態     A   B   C   D   E 1        9:07  9:01  9:04  9:07 2    東京  11.8  11.5  11.6  11.8 3    千葉  12.4  11.9  12.1  12.4 4    埼玉  11.1  10.8  11.0  11.1 上記の作業を実現できるマクロを 教えていただけませんでしょうか。 よろしくお願いいたします。

  • エクセルで2列のデータを1列にする方法について質問です

    エクセルで2列のデータを1列にする方法について質問です エクセルで2列のデータを1列のデータにするときに A B 1 a 2 b 3 c   4 d 5 e ↓ A B a 1 b 2 c 3 d 4 e 5 となるようにするにはどうすればいいでしょうか?

  • エクセルデータをメモ帳へコピーするには

    約20行のエクセルデータを、一定の形式指数で小数点以下6桁とし、数値を整え、メモ帳にコピーしなくてはなりません。 例 「1.000000E+0004」<-右端は04になるのを0を手動で2個加えてます。 加えるべきデータが他に2列分あり、間に0.000000E+0000の列が入ったりしています。 ひとつひとつのデータを切り貼りするのも手間がかかるので、簡単な方法は無いでしょうか? データとしては全部で200ファイルあります。

  • エクセルの列から行へコピーするBVA教えて下さい

    エクセルのVBA(マクロ)について、素人なので教えてください。 下記のようなデータ変換を行がある限り変換するVBAマクロです 列1列2列3列4列5列6列7列8 社員1 A B C D E F G H 社員2 H I J K 社員3 L M 社員4 O P Q R ↓   列1列2 社員1 A B 社員1 C D 社員1 E F 社員1 G H 社員2 H I 社員2 I J 社員3 L M 社員4 O P 社員4 Q R 違うエクセルシートへ行がある限り、コピーを繰り返す。 BVAの解説付きだと助かります

  • ユーザーフォームを設定して任意列のデータを他の列(複数)にコピーしたい。

    EXCEL VBAについての質問です。 初心者です。宜しくお願い致します。 使用環境はWindows 2000 service pack4 Excel 2000. =質問= VBAのユーザーフォームで任意列のデータを他の列(複数)に コピーしたい。 あるシートにIndirectによる選択肢を沢山設けた表を作成して います。 例えば1つ目のデータは、 A1,A3,A5,A7,A9・・・A21にindirect関数が設定されそれぞれ 選択できるようになっている。(偶数行は見栄えのためのスペ ース。A1,A3,A5,A7,A9・・・A21は全て異なる選択肢。) 2つ目のデータ列は都合上C1,C3,C5,C7,C9・・・C21となって いる。 このデータがA、C、E、G、I、J、K列と約40列並んでいる。 A列で選択したデータを任意の列(例えばE、G、I)に一括でコ ピーしたい。 もちろんコピー元となるA列はCやE列になったりすることもあ ります。 VBAを使って一つ隣の列をコピーするボタンを作ることはでき ましたが、ボタンが約40個もあること、作業性が良くないこ とからユーザーフォームを使って任意の列(列全体ではなくA1,A3,A5,A7,A9 ・・・といった飛び飛びのデータ)を任意の複数の列にコピー させたい。 各列の飛び飛びのデータを変数で返してあげて、指定した列( 表示的には配列番号2~5といった表現)にコピーするにはど のようにVBAを組めばよいでしょうか? 以上、お手数をお掛けしますがご教授の程宜しくお願い致しま す。 p.s 本来ならサンプルをつくって質問すべきですが私用PCにはExcel が入っておらず、会社からは外部へアクセスできない環境なの で言葉のみで説明させていただきました。 理解しにくい部分があれば追記しますので何卒宜しくお願い致 します。

  • エクセルVBAで、指定した文字列間のデータをコピー

     似たようなものがあるのですが、うまくいかないため、 詳しい方お願いします。  指定した2種類の文字列間のデータをコピーするエクセルVBAです。 データは、A1~A50の1列に入っています。 たとえば 北海道:札幌50 函館 20 青森 青森60 弘前30 岩手 盛岡50 rt 500 30 秋田 秋田1 と続きます。 「青森という文字列以降」から「岩手という文字列の前まで」の間のデータ をコピーして、Sheet2へ貼り付けたいです。 可能であれば、青森のデータは、Sheet2のA5,A6へ 岩手のデータはSheet2のA8,A9へ貼り付けたいです。 よろしくお願いします。 エクセル2007です。

  • エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させた

    エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列に約1,000行くらいのデータが有ります。 このA列内で重複レコードがあります。 B列に約1,000行くらいのデータが有ります。 B列内でも重複レコードが有ります。 この条件の中で (1)A列にもB列にあるデータすべて (2)A列にしかないデータすべて (3)B列にしかないデータすべて を抽出したいのですが、どんな方法がありますか? それで (1)をC列 (2)をD列 (3)をE列 に並べて表示させたいです。 さらに抽出されたデータで重複レコードの場合は1件のみで表示したいです。 複数の操作を繰り返すのではなく C,D,E列に式を入れるだけで済ませる事は可能でしょうか? よろしくお願いします。 例    A   B    C   D   E 1-001-002--001--004--007 2-002-002--002--006--008 3-001-001--005--010 4-005-007 5-001-005 6-004-005 7-004-008 8-010-007 9-006-007 A列には001が3個、002が1個、005が1個有ります。 B列には001が1個、002が2個、005が2個有ります。 A列にもB列にも有るのは、001と002と005ですから これがC列に表示されます。 でそれぞれA列にもB列にも複数有りますが、1個として判定なので よって、C列には 001 001 001 001 002 002 005 005 と表示ではなく 001 002 005 と表示したい。 次にD列はA列に有る物だけですから 004 006 010 となります。B列には004は2個有りますが同じ値なので 004 004 006 010 では無く004は1個の表示です。 E列はB列のみのデータなので 007 008 です。 同じくB列には007が3個有りますが1個ともなします。 007 007 007 008 では無く 007 008 です。

専門家に質問してみよう