人に聞けない痔の悩み、これでスッキリ >>

時系列で表示された2つのデータA,Bがあります(画像参照願います)。
時間、値A で縦方向にずらり、
時間、値B で縦方向のずらりと並んでいます。そのデータを同時性で検索して結合したいと思います。
つまり、最終形としては時間、値A, 値Bの3列でずらっと並べるということです。値Aのシートの3列目に値Bをコピーするということです。ということは2つのデータセットの時間を検索していくことになります。またその同時性という意味ですが、それほど厳密ではありません。値Aの方は1時間ごとに自動計測されたもので、値Bは計測値ですが人力なので時間的に不規則です。例えばある年月日の13時25分に計測されたB値はA値の同年月日の13時の欄に入ればいいという感じです。

VLOOKUPとか使うのかなと思ったのですが、ダメですね。また日時データとしては例えば1900年1月1日からの経過時間(HR)とかで序列化はできるものと思ってはいます。
※コンサルタント会社はこういう手法がわからないとき、人海戦術でやるようです。こういう操作って人間のすることではないように思うのですが。エクセルによる新女工哀史かと。

「エクセルで2つの時系列のデータを結合する」の質問画像

A 回答 (9件)

>Bの方は必ずAに当てたいわけです。


Aの日時データが期間的にも網羅されており、
データの書式もあっているなら、
Bは必ず当たります。

データがあるかないかは、質問の内容からは分からないです。
サンプルデータも全く期間が違うようですし。

ですから、データのそれぞれの意味(定義)や条件が分かっていないと、
全てが無駄になります。
何をやりたいか? その意図することが、見えてこないです。
それがこの作業をするうえで、最も重要なことです。
EXCELでやるにしても、人海戦術だとしても、それを理解してやらないと
作業そのものが無駄になります。

データが数千あっても、データの意味とやりたいことが分かっていて、
データそのものの信頼性や書式等の課題がクリアされていれば、
正直言って、数分、データの補正なども考えて1時間もあれば、
できる内容ですし、多少『やりたいこと』がブレても、
同じ程度の時間でやり直しが効くでしょうし、
もっと突き詰めたデータ解析ができる内容だと思います。

だって、2つのデータを合わせるだけなんですから。

ですから、肝心なことは、
データの意味とやりたいこと
データそのものの信頼性と書式等の課題
というなのです。

『やりたいこと』は、あなたしか分かりません。
EXCELの関数がどうのは、大した話ではないのです。

添付は、AにBをぶつけた一部サンプルです。
INDEX & MATCH
SUMIF
の例です。
「エクセルで2つの時系列のデータを結合する」の回答画像9
    • good
    • 0
この回答へのお礼

回答ありがとうございました。やりたいことが不明確ということでした。最も手短に言います。私は説明が冗長すぎるようで(人海戦術とか書いたりして)反省しています。”年月日時をキーにして検索してAデータの横にBデータを当てる” それだけです。量が多いと大変なので。これだけなのですが。時間をキーにして、ということですが、exactにはならないのは仕方ないです(データサンプリングのタイミングが全く違うから)。とにかく教えて頂いた方法を習得できるようにします。

お礼日時:2019/08/14 16:48

次回から、こういうの質問する時は、サンプルで項目とデータも多少貼ってくれるといいんだけどね。


項目ないと何が何だかわかんないからね。
それと何をどうしたいかはダラダラ書かずに、箇条書きで書いてね。
こんなの人海戦術なんかしないから。
日付、時間、計測値なのかな?
それをまとめたいだけ?

Aデータをスペース区切りして、日付けと時間を分けるだろ?
Aデータの計測値の列を右に移動するだろ?
日付の表示フォーマットをどちらかに揃えるだろ?
AデータをBデータの下にくっつけるだろ?
テーブル化して、ソートするだろ?
以上だよ
    • good
    • 0

人海戦術で『どうやる』のかがすっきりしません。



画像のBデータの
❶2013.07.14 16:45 69.9 
❷2013.07.14 16:55 156 は、
Aデータの
①2013/07/14 15:00
②2013/07/14 16:00
③2013/07/14 17:00 の行の三列目にどう入れれば良いのでしょうか。

画像にはないですが、Bデータが
❶2013.07.14 16:45 69.9 
❷2013.07.14 16:55 156
❸2013.07.14 17:00 88.3 
❹2013.07.14 17:15 20.7
❺2013.07.14 17:30 34.6 のようであったときは、どのようにしたいのでしょうか。

実測データ(Bデータ)を削除(無視)するかどうか、どのように扱うのか、示すと、わかりやすくなると思います。
    • good
    • 0

>Bデータの日時が文字列じゃないのかなと


Bデータに限らず、Aデータもです。
EXCELの各セルの書式を見極めて、同じデータになっていることが
データを結合させるためのポイントです。
文字列なら、DATE関数に文字列の数字も埋め込めば、年月日になります。
もしかしたら、時間の方もTIME関数に『時』の文字列を埋め込む必要が
あるかもしれません。

IFERRORが付いているのは、その『年/月/日 時:00』が一致しない場合の
処理をするためです。
=IFERROR(INDEX(C:C,MATCH(E6,E:E,0)),"該当無")
の、『該当無』をスペース『"”』にすれば、何も出なくなります。

>関数仕様に関する引き出しの多さ
私は、はっきり言って、ずっと初心者です。
必要にせまられて、その場で、こんな関数ないかなってさぐるだけです。
ですから、EXCELでまともにマクロやコードなど書いたことありません。
自分の作ったEXCELでさえ、何してるか分からなくなることもあるので。
できるだけシンプルにしておきたい。というのが、モットーです。

ということで、
Aの『年/月/日 時:00』と
Bの『年.月.日』+『時:分』
が、一致するようにデータを
加工できるか否かが、結合のカギです。

いかがでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。関数の仕様を調べればわかることだと思いますが、IFERROR()関数は”該当なし”のときにそれを表示するか否かですね。
作業の流れではAのデータに向けてBを寄せていくわけですが、Aのデータは数千であり、Bのデータは数百です。数千のAのデータの値の横のセルに該当したBの値が付加されるのですが、Aの方の大部分はBが寄ることがないのですが、Bの方は必ずAに当てたいわけです。最終的な仕上がりはAデータのシートのみなのですが、”該当なし”とはAデータに対する属性なのでしょうか(Bがないという意味で)。Bに対して該当するAがないのは問題です。
また、1つのAデータに複数のBデータが当たったらどうなるの?ということですが、それが起きないようにBをアレンジしなおします。
とにかくまずAもBも日時を比較できるように設定することが先ですね。

お礼日時:2019/08/08 18:39

No3です



追加情報はいただけないようですし、かといって、回答内容を理解しようという様子もなさそうですので、勝手な解釈で「こんなことなら可能」というものをご参考までに示しておしまいにいたします。

AB列が「Aデータ」で、そのシートのF~H列に「Bデータ」をコピペします。
するとあらかじめ設定されていた関数によりJ列とD列が自動計算されるという仕組みです。

それぞれには以下の式を設定してあります
J3:=MROUND(F3+G3,1/24)
D3:=IFERROR(INDEX(H:H,MATCH(MROUND(A3,1/24),J:J,0)),"")
「エクセルで2つの時系列のデータを結合する」の回答画像5
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
エクセルの関数の使用について私の理解を超えているので理解するのにしばらく時間がかかりそうです。
”追加情報”がないとのことですが、このサイトでは”お礼”以外に書くところがないと思っておりますが。

お礼日時:2019/08/08 08:02

やり方として簡単なのは、


Bデータの日時を加工してしまうことです。
下記の添付の例では、時間を1時間単位のデータに加工した例です。
=DATE(MID(A1,1,4),MID(A1,6,2),MID(A1,9,2))+TIME(B1*24,,)

こうすれば、Aデータと日時が一致する(想定される)ので、
下記の添付の例で、
F列は、SUMIF
=SUMIF(E:E,E1,C:C)
G列は、AVERAGEIF
=AVERAGEIF(E:E,E1,C:C)
H列は,INDEX & MATCH
=IFERROR(INDEX(C:C,MATCH(E6,E:E,0)),"該当無")
以下の1オプション
=IFERROR(INDEX(C:C,MATCH(E6,E:E,1)),"該当無")
※H4の例

とかで、データを埋めていけばよいです。
データの意味合いから仕様を固めればよろしいかと。

セルの書式設定により、年月日、時分秒の加工と整合性を
探るのが、こちら側から見えない難しさだと思います。

いかがでしょうか?
「エクセルで2つの時系列のデータを結合する」の回答画像4
    • good
    • 0
この回答へのお礼

回答ありがとうございます。Bデータの日時について加工してAデータとそろえることが先決というのは、なるほどと思います。もともとBデータの日時が文字列じゃないのかなと思っていました。その場合、がんばってもAデータのような意味にならないのではないかと。年月日時分秒の書き方っていろんな可能性があるので関数DATEを使えば文字列が年月日時分秒になるということなのでしょうか。IFERRORという関数は”もしエラーなら”ということなので例外処理と言う風に見えますが。MATCHという関数の仕様についても十分知りませんでした。
余談ですが、こういう風に関数仕様に関する引き出しの多さがエクセル攻略のカギということでしょうか。どうしようもなくなってVBAということもあるのかなと思いますが。こうなると本格的なプログラミングですが、そこでも関数のワザが効くのでしょうか。

お礼日時:2019/08/08 08:14

こんにちは



もう少しなさりたい内容を整理されれば、さほど難しくはないのではないかと想像します。

>時間、値A で縦方向にずらり、
>時間、値B で縦方向のずらりと
ご提示の図はその順ではないように見受けられますが??

>値Aの方は1時間ごとに自動計測されたもので、~~
>~B値はA値の同年月日の13時の欄に入ればいいという感じです。
最終的に(A値を基準に)1時間間隔でデータをまとめれば良いということですよね?
No1様も指摘なさっていらっしゃいますが、B値の時刻を丸めた際に、同じ時間帯に入る値が複数存在する場合はどうするのかを決めておく必要があります。

そのうえで大雑把な考え方として・・・
1)B値の時刻を1時間単位でまとめた時刻を(作業列に)算出しておく
2)まとめのシート(の例えばA列)に1時間間隔で時刻を記入
3)上記2)の時刻をキーにAデータ、Bデータからそれぞれ検索しデータ値を参照
 (一致検索で良さそうに思われますし、VLOOKUPまたはMATCH-INDEXで対応できるでしょう)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。作業の内容ですが、手作業でやるイメージでは、Bの値をAの表の近いところにコピペする、というだけです。Bもある程度大量にあります。
 データですがAは定時でずらり、Bは飛び飛びです。Bが同じ時間に2つデータがあると言う指摘がありましたが、それは確かに作業上問題ですね(手作業でも決めなければならないので)。ハッキリしなくて申し訳ありませんがBのデータは上から下に時間が飛び飛びに流れていると思って下さい。飛びの間隔も不規則です。マッチングさせる背景の考え方ですが、ある年月日時からの経過時間(長さ)として見ているということでしょうか。だから値を使って検索できるということですかね。また、マッチングという意味では2つありますね。1時25分のデータを1時と見るか、2時と見るかです。ここはあまり神経質ではありません。どちらでもいいのですが、近い方がベターではありますが、小数切り捨てと同じで1時45分も2時とはせず1時でもいいです。トータルでは5年とか10年のデータがあり、Aデータは1時間ぐらい(つまり1個ずれ)では大きな変化はありません。そういうデータなのです。

お礼日時:2019/08/07 10:56

VLOOKUP関数をご存知でしょうか?、この関数には近似値を取得するという機能があるため、一般的に使われている完全一致ではなくてもデータが取得出来ます。


方法としてはまず、Bデータの日付と時間を結合し、それに対する値をAデータ側に引用する方法です。
例としてBデータの1列目に列挿入して、日付と時間を結合します。
この時の注意点として、双方の書式が一致していなければなりません。
Aデータの日時が文字列の場合には、Bデータの方も文字列として結合するだけですが、日付形式の場合にはBデータの日付+時間としなければならないので注意してください。
定義:
AB:Aデータ
C列:    参照元
E列:Bデータ結合日時
F列:    日付
G列:    時間
H列:    計測値

Aデータ日時が文字列の場合
E2『=F2&" "&G2』
Aデータ日時が日付の場合
E2『=F2+G2』

次に参照側ですが
C2『=VLOOKUP($E:$H,4,1)』
LOOKUP関数で4列目を取得します、この時に3番目の引数は0にすると完全一致ですが、1にすると近似値を取得します。
お試しください
    • good
    • 0
この回答へのお礼

回答ありがとうございます。VLOOKUPによる検索は完全な一致だとばかり思っていました。顧客名とか品番とかで検索するときに全角と半角英数とか姓と名の間に半角全角での違いとかギリシャ文字の数字と半角英数とかをどう判断するのだろうと思っていましたが。そういう意味で検索って実は難しいし、正確でもないと思っていました。再度調べてみます。

お礼日時:2019/08/07 10:42

データの規則性と具体的イメージが分かりません。



例えば、
2013.07.14 の16時台のデータは2つあります。
Aと結合した時、どう表示されているイメージなのですか?

見た感じ、Bデータの日と時間を結合して加工すれば、済む話だと
思うんですが。

だから、問題は同じ『時』のデータはどのように表示するかです。
同じ1時間の間の合計値とか、平均値とか…
データの意味が分からないので、分かりません。

コンサル会社?、何をしたいか分からないことを解き明かすのが、
コンサル会社の役目なんですけどね。A^^;)

で、どうなんでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。Aの方は自動計測であり、Bの方は人間がやっているので同じ時間に2回やるってことも生じます。そのためBの方が2つデータがあるということになり、おかしくなりますね。Bの方の整理がついていないので1つの時間に2つのデータがないように工夫します。実際に手で処理してもそこは判断しないといけないことなので。Bの方は再度精査して1つの時間に2つのデータがないようにアレンジします。そうなっていると言う前提でお願いします。Aはちゃんと刻んでますね。
コンサルの方はとにかく結果を出すことになるので技術でやる時間がなかったら再契約して人に頼るようですが。

お礼日時:2019/08/07 10:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング