
お力添えください。
現在 Excelのセル内にてテキストフォーマットにて YYYYMMDD hh:mm:ss とGTMではいっているものに 一定の時間を(+9:00:00)追加し、日本時間に変えさせたいと考えております。
Time関数などをつかってみましたがうまく動作せず、どうしたらよいか悩んでおります。
Stringで読みこんで、数値変換し、計算後、日にちの繰り上げをさせるがよいでしょうか?
しかし、日にちで計算すると、月の繰り上げも考慮することになり、やや手間がかかるように思えます。
もっとシンプルに計算をさせる方法がありますでしょうか?
ご助言お願いいたします。

No.1ベストアンサー
- 回答日時:
A1に「20100630 10:50:03」という値、セルの書式は文字列。
B1に9時間後を出力する場合、
B1には
=DATEVALUE(MID(A1,1,4)&"/"&MID(A1,5,2)&"/"&MID(A1,7,2)&MID(A1,9,9))+"09:00:00"
…という式を入れ、セルの書式はユーザー定義で「yyyy/mm/dd hh:mm:ss」で。
ご助言ありがとうございました。
おかげで目的を達成することができました。
Excel関数を知らない自分が恥ずかしい限りです。
時間をつくり、Excelの基本的な部分を学習させていただきます。
No.2
- 回答日時:
>Time関数、Stringで読みこんで
VBAの質問では無いでしょう。エクセル関数の問題レベルでしょう。
他もVBAでやる関係上、この部分もVBAでやるのかな。
>Stringで読みこんで
VBAやVBの経験があるのかな。しかしこの質問を出しているということは、エクセルの機能の勉強の方がまだまだでしょう。VBは出来てもエクセルは詳しくないというタイプかな。
エクセルの勉強ポイントの1つに、日付(時刻)シリアル値という考えがあります。
日付は1900年の初めからの通し日数(正整数)で表し、時刻は1日24時間を1とした0時からの数(正の小数点つき数)で表す考えです。ですからエクセルでは日付や時刻のセルは、セルの値は数値が入っている。
この仕組みを使うと、時間の足し算引き算が、数の足し算引き算に置き替わる。
また日替わり、月代わり、年代わり、月の大小、閏年の扱いがエクセルの機能に任せられるので、複雑な場合別けけのプログラムが要らないしプロミスの心配も要らない。
ーー
さて本件はセルに文字列でデータが入っているらしい。エクセルの便利な機能を使う(演算や関数利用と多彩な表示形式を使う)ためには
これを日付・時刻シリアル値に変換しないとならない。
これには便利な関数がある。
(1)日付文字列を使う
1998/110/23
98/03/02
昭和21年10月15日 など
(2)DATE関数を使う
西暦・西暦下2桁年月日の数を引数に指定
年月日の数字文字列
年月日データの入っているセル番地
などが在る。
そしてシリアル値の日付部分と時刻部分は別々(セルに手入力ではスペースを挟んで続けて入力可能)に算出しなくてはならないが、両者を+で足しておく。
>定の時間を(+9:00:00)追加し、
は地域が東にあるに向かって足し算に鳴ると思うが、日付変更線を超える場合は良く考えてください。
日本だけを問題にするなら135/360*24)=9で良いのかも。
ーー
さて日付シリアル値に直す関数式は
A1セルに 20100630
=DATEVALUE(LEFT(A1,4) & "/" & MID(A1,5,2) & "/" & RIGHT(A1,2))
とりあえず日付シリアル値の整数で表されるだろうが
書式を日付に設定して、見た目2010/6/30になる。
時刻部分に対してもTIMEVALUE関数があるのでA1文字列から時分秒部分を切り出し:を挟んで結合しする。
9時間を足す部分があるので日付+時刻を1セルに表し、そこに+9時間して、日付繰上げの機能を使えるようにする。
ふつうなら
(A)両者を足し算する か
(B)日付と時刻を別セルニする
方法があるが(A)にならざるを得ないのかな。この辺は世界的な時刻の経験が少ないので質問者で良く考えてください。
ーー
VBAにもDateValue,TimeValue、Left,Mid,Rifht関数があるので使えます。このへんはVBA(関数)も関数も同じで、VBAだから飛躍的に便利な関数ややり方は無い。
別途好みの形にユーザー関数はVBAで作れるが。
ーーー
エクセルにはCONVERT関数が合ってGTM関連を探したが、無いようだった。
詳細なご説明大変ありがとうございました。
Excel関数の便利さ、また、VBAの基本的な部分勉強させていただきたいとおもいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel UserForm の表示位置
-
VBAマクロ実行時エラーの修正に...
-
セルの半透明着色処理
-
【ExcelVBA】値を変更しながら...
-
【Excel VBA】マクロで書き込ん...
-
特定の色のついたセルを削除
-
C# DataGridViewで複数選択した...
-
エクセルVBA 配列からセルに「...
-
下記のマクロの説明(意味)を...
-
Excel VBA でFunctionプロシジ...
-
Excelで空白セル直前のセルデー...
-
エクセルのカーソルを非表示に...
-
【VBA】写真の貼り付けコードが...
-
Rangeの範囲指定限界
-
円弧の描画方法
-
入力規則のリスト選択
-
ユーザフォームを使ってのデー...
-
CellEnterイベント仕様について
-
VBAの質問です! 転記元のセル...
-
MATLABのポップアップメニュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel UserForm の表示位置
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
C# DataGridViewで複数選択した...
-
【VBA】【ユーザーフォーム_Lis...
-
データグリッドビューの結合セ...
-
【VBA】写真の貼り付けコードが...
-
VBA:日付を配列に入れ別セルに...
-
入力規則のリスト選択
-
セルの半透明着色処理
-
EXCEL VBA 文中の書式ごと複写...
-
Excel VBAでCheckboxの名前を変...
-
【ExcelVBA】値を変更しながら...
-
【Excel VBA】一番右端セルまで...
-
エクセルのカーソルを非表示に...
-
DataGridViewのフォーカス遷移...
-
DataGridViewでグリッド内に線...
-
Excel VBA でFunctionプロシジ...
おすすめ情報