- ベストアンサー
Excelを使って読み取った時間(h:m:s)を(h:m:s:1/100)に表示する方法
電気抵抗をマルチメータで読み取ったデータをExcelに落として実験をしていたのですが、、、 時間データが秒までしか表示しなくて困っています。 設定では0.5秒ずつの時間で書き込んでいるはずなのですが、 17時10分50秒 17時10分51秒 17時10分51秒 17時10分51秒 17時10分52秒 17時10分52秒 17時10分53秒 17時10分53秒 17時10分53秒 という間隔で時間が表示されます。 この時間データ(↑)を標準データー(↓) 0.715856481 0.715868056 0.715868056 0.715868056 0.71587963 0.71587963 0.715891204 0.715891204 0.715891204 0.715902778 に変換に変換して、ここからどの様にして、秒の下の位を表示したらよいか検討が付きません。 ご指導の程よろしくお願いします。 長々説明してスミマセン。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 No.3のe10goです。 No.3で行数が足りないと回答しましたが誤りでした。 下の左の小数点9位までのデータをExcelで取り込むと、右のように小数点秒も表示できます。 0.875196759 = 21:00:17.00 0.875197917 = 21:00:17.10 0.875208333 = 21:00:18.00 0.916876157 = 22:00:18.10 0.958543981 = 23:00:18.20 申し訳ありませんでした。 なお、上の事からも、取り込み前のデータを工夫する必要がありそうです。 お詫びと言っては何ですが、No.4の補足にある質問に回答します。 >エクセルに測定値のデータが10msぐらいの間隔で入ってくるのですが、それをリアルタイム(測定中にグラフにプロットを打つ)様にしたいのですが、それは可能ですか? エクセルにデータが追加される度に、グラフの系列要素(プロット点等)を自動で増やす方法があります。 日経パソコン2005/10/10号「Excel緊急対策室、自動追尾グラフを作れ」の記事にあった方法で、名前定義と関数を活用します。 内容をそのまま載せると、著作権の問題があるので、カスタマイズして記載します。 まず、シート「Sheet1」に下の例のデータがあり、A2~B5のデータでグラフができているものとします。 (行),「A列」,「B列」 (1),「時間」,「データ」 (2),「21:00:17.00」,「100」 (3),「21:00:17.10」,「102」 (4),「21:00:17.20」,「104」 (5),「21:00:17.30」,「106」 以下に、方法を説明します。 1. A2を選択し、名前ボックスに「timetop」と入れて、「Enter」 または、A2を選択し、「挿入」メニュー →「名前」→「定義」→ 「名前」欄に「timetop」と記入 →「OK」 2. B2を選択し、名前ボックスに「datatop」と入れて、「Enter」 または、B2を選択し、「挿入」メニュー →「名前」→「定義」→ 「名前」欄に「datatop」と記入 →「OK」 3. 「挿入」メニュー →「名前」→「定義」→「名前」欄に「timerange」と記入 → 「参照範囲」欄に「=OFFSET(timetop,0,0,COUNT(Sheet1!B:B))」と記入 →「追加」→ 4. 「名前」欄に「datarange」と記入 →「参照範囲」欄に「=OFFSET(datatop,0,0,COUNT(Sheet1!B:B))」と記入 → 「追加」→「OK」 5. グラフを選択して、グラフウィザードボタンをクリック 6. 「次へ」ボタン →「グラフの元データ」の「系列」タブの「値」欄に「Sheet1!datarange」と記入 → 「項目軸ラベルに使用」欄に「Sheet1!timerange」と記入 →「完了」 これで、7行以下にデータが増えるとグラフも追加されるようになります。
その他の回答 (7)
- e10go
- ベストアンサー率38% (47/122)
こんばんわ。No.3,No.5のe10goです。 >取得データが多すぎて画面が下がるにつれ見えなくなっていきます。...グラフをずーと表示する方法ありませんか? ウインドウを分割してみたらどうでしょう。 グラフがExcelウインドウ枠の上半分にあるのなら、グラフエリアより下の行のA列にカーソルを置き、「ウインドウ」メニュー → 「分割」でExcelウインドウが上下に分割されます。 この状態なら、カーソル移動で下のウインドウ表示が変わっても、上のウインドウ表示は変わりません。
補足
本当に有難うございます。すみませんでした
- imogasi
- ベストアンサー率27% (4737/17069)
文系人間で、リアルタイムのデータ取り込みなど無縁のものですが、見当違いとか、判っているよということなら、回答を無視してください。 エクセルの表示形式の時刻などに頼らず、基本に立ち返って見ました。下記はヒントになりませんか。 ただ下記の例のA2に入る、取り込んだデータのミリ秒以下の値がどうなっているかは、取り込み機能を担うソフト次第だと思いますので、その辺が私には不明です。 例 (列幅を大きくとり、小数点以下桁数設定を15桁ぐらいにして置いてください。) A2:0.715856481 (質問の例データ借用) B2:計算式 =INT(A2*24) 結果 17 時間が出る C2:計算式 =B2/24 結果 0.708333333 時間部分のA2の値が出る D2:計算式 =A2-C2 結果 0.007523148 A2での分以下の値 E2:計算式 =INT(D2*24*60) 結果 10 分が出る F2:計算式 =E2/(24*60) 結果 0.006944444 A2における分の値 G2:計算式 =A2-C2-F2 結果 0.000578703 A2における秒以下の値 H2:計算式 =INT(G2*24*60*60) 結果 49 秒の値 I2:計算式 =H2/(24*60*60) 結果 0.00056713 A2における秒の値 J2:計算式 =A2-C2-F2-I2 結果 0.000011573592593 A2における秒を含まずそれより下の値 K2 計算式 =INT(J2*24*60*60*1000) 結果 999 ミリ秒以下 ワーク列ばかり多くとりますが、VBAコードででも組めば、一瞬にして計算して文字列で表示できると思います。 エクセルの表示形式はほとんど、数!の表示形式です(NumberFormatというVBAプロパティ語からも判るように。日付けも値は数です) しかし本質問の場合は、文字列表示に頭を切り替えざるを得ないのではないでしょうか。
補足
有難うございます。VBAコードに組見込むと云う発想が無かったので勉強になりました。有難うございました
- fmajin
- ベストアンサー率61% (75/122)
No.4のfmajinです >エクセルに測定値のデータが10msぐらいの間隔で入ってくるのですが、それをリアルタイム(測定中にグラフにプロットを打つ)様にしたいのですが、それは可能ですか? これは実際にどのようにリアルタイムでエクセルとデータの入出力が行われるのか、というようなことでも変わってくるように思います。ごく根本的な問題として、10ミリ秒という割とシビアなタイミングで、エクセルを介してデータの入出力ができるのか、というのがまず懸念されるところでしょうか。それをグラフ描画に反映するという時間もありますね。さらに、データがどんどん増えていくと状態では、明らかに処理速度が低下していくであろうことが予測されます。 つまり、専用のアドインソフトなどを利用してエクセル上にデータを取り込むのかもしれませんが、その取り込む方法がどのようになっているのかに、まず左右されるでしょうか。 データの取りこぼしなどは容認でき、ある程度リアルタイムにグラフ描画できればOKということであれば、No.5の方が、非常に役に立つテクニックを紹介してくださってますし、場合によってはこれに多少のマクロを追加する程度で実現できるかと思います。
補足
有難うございました。 本当に助かりました。 >専用のアドインソフトの事も考えてみます。 有難うございました
- fmajin
- ベストアンサー率61% (75/122)
恐らく、データを取り込む際にデータが欠落しているのではないかと思われます。先の回答にもあるように、Excelで100分の1秒まで表示させることは可能ですが、半ば裏技的な内容になりますので、さまざまな不具合が生じることがあります。 まず、元データはどのようになっているのでしょうか? Excelのシリアル値に対応した小数になっているのでしょうか。その場合、元データの数値が、ご質問の標準データの桁数しかないのであれば、100分の1秒を特定できるだけの桁数がないのでおっしゃっているようなことはできません。一方、元データにはあるのに、Excelに取り込むと欠落してしまうというのならば、取り込み方法のほうを工夫する必要があるでしょう。 元データがシリアル値に対応した小数になっているのならば、そのまま小数として取り込めば、データが欠落することはないと思います。一方元データが「17時10分51秒10」などの文字列等になっているのならば、いったん文字列のまま取り込むという方法があります。 このように、元データがどうなっているかを調べていただいて、再度ご質問いただければ、もっと具体的な対処法を回答できるかと思います。元データは、テキストデータなのだと思いますから、「メモ帳」や「ワードパッド」などで開いてみるとわかると思います。
補足
>再度ご質問いただければ、もっと具体的な対処法を回答できるかと思います。 #4さんのお言葉に甘えさせて貰います。すみません、、、 まず、#2さんの教えて貰いました通りに数値(0.042372801)を代入し、表示形式をユーザー定義h時m分s秒.00にしたら1時1分1秒.01になりました。 また、#3さんの云う通り、小数桁はありました、 で、、、色々調べて見たら、、、 0.8751967592592590 → 21:00:17.00 0.8751967592592590 → 21:00:17.00 0.8752083333333330 → 21:00:18.00 0.8752083333333330 → 21:00:18.00 0.8752083333333330 → 21:00:18.00 となり、、、エクセルにくるデータの小数秒のデータ(全て.00秒のデータ)しかありませんでした_| ̄|○ 何とか考えてみます。 色々お騒がせしてスミマセンでした。 本当にすみません。。。 じつわ、、もう一つ質問がありまして、 エクセルに測定値のデータが10msぐらいの間隔で入ってくるのですが、それをリアルタイム(測定中にグラフにプロットを打つ)様にしたいのですが、それは可能ですか? 本当に皆さん有難うございます。
- e10go
- ベストアンサー率38% (47/122)
こんばんわ。 秒の下の位を表示するのは、No.1,No.2の回答の通りです。 しかし、質問者さんのデータでは、小数点以下は「0」の表示になります。 Excelでの実際のデータは、以下のようになります。 時間:分:秒.小数点秒 = 数値データ 17:10:50.00 = 0.7158564814814820 17:10:50.50 = 0.7158622685185190 17:10:51.00 = 0.7158680555555560 17:10:51.50 = 0.7158738425925930 17:10:52.00 = 0.7158796296296300 17:10:52.50 = 0.7158854166666670 17:10:53.00 = 0.7158912037037040 17:10:53.50 = 0.7158969907407410 17:10:54.00 = 0.7159027777777780 A1の書式を「文字列」、B1の書式を「0.00000000000000000000」にして、 B1に、「=VALUE(A1)」と入れ、A1に上の時間:分:秒.小数点秒を入れれば、どんな数値になるかわかります。 つまり、質問者さんのデータでは、少数の桁数が足りません。 Excelに取り込ませるデータを、上のように少数の桁数を増やすか、「17:10:51.50」のように時間データの形で取り込めばうまく良くと思います。
お礼
忙しい中、有難うございます。
- mshr1962
- ベストアンサー率39% (7417/18945)
表示形式をユーザー定義にして h時m分s秒.00 で 0.042372801→1時1分1秒.01 と表示になります。
お礼
有難うございます。
- tgn1013
- ベストアンサー率33% (386/1137)
既に同様の回答が入っていそうですが・・・ セルの書式を hh:mm:ss.00 とされれば、小数点2位まで秒が表示されると思います。
補足
>既に同様の回答が入っていそうですが・・・ >セルの書式をhh:mm:ss.00、、、 その回答を見まして試しましたが、質問に書かせて貰いました様に、標準データが同じ状態?見たいな様で、セルの書式を変えても 19:13:33.00 19:13:33.00 19:13:33.00 19:13:33.00 19:13:33.00 と成ってしまい小数2位が表示できません。 忙しい中ほんとうに回答有難うございました。
補足
出来ましたぁ。本当に有難うございます。 とても嬉しいです 此れで画面を見ながらの自動計測が出来ます(^-^*) で、、、自動計測の装置を動かしてみたら、、、 取得データが多すぎて画面が下がるにつれ見えなくなっていきます。プログラムの性質上一つシートでしか(その画面以外にエクセルの画面を切り替えたら、データが動かした画面に飛ぶ)ので、グラフをずーと表示する方法ありませんか? 質問ばかりして済みません。無視してもらって結構です、、、すみません。 本当に有難うございました。