関数で時間の変換が出来ないかと苦戦しております。
データ日付はA列に「10-Apr-2017 02:31PM」の形であり、これを日本形式の
・「2017/4/10 14:31」
もしくは
・2列にわたってB列に「2017/4/10」、C列に「14:31」と入力したいです。
今「=IF(A1="","",(MID(A1,1,2)&"/"&MID(A1,4,3)&"/"&MID(A1,8,4)&" "&MID(A1,13,7)))」
で入力したところ
「10/Apr/2017 02:31PM」で答えが返ってきます。これをコピーして別セルにテキスト貼り付けすると「2017/4/10 0:00」と近い形までになるのですが、正解にはならず詰まってます。
米国からのデータで書式の変更(時刻変更やユーザ定義による変更)は一切反応しません。
区切り位置の変更で、「10-Apr-2017」と「02:31PM」に分けてみたものの「2017/04/10」と「14:31」への変換もできずお手上げとなりました・・・
VBAを使わずに変換できるのでしょうか?
なお、エクセルは2013にて作業しております。
No.7ベストアンサー
- 回答日時:
#2の回答者です。
少しお聞きしなければならないのは、そのデータは、ネットなどから持ってきたものですか?こちらでも、いろいろ試してみましたが、#VALUE! というエラーになるのは、特殊な条件下しか思い当たらないのです。いわゆるネットなどから持ってくる、文字コードについている識別信号(BOM)や   などです。
その場合、基本的には、Clean関数を使うのが一般的です。
日付だけ
=MID(CLEAN(A1),1,FIND(" ",CLEAN(A1))-1)*1
=MID(CLEAN(A1),1,FIND(" ",CLEAN(A1))-1)*1+MID(A1,FIND(" ",A1)+1,5)+(RIGHT(A1,2)="PM")*12/24
ただ、こうした場合を考えると、マクロによるデータの抜き出しも考えなくてはなりませんね。文字として認識している限りは、マクロで可能です。
ちょうど今、私もそこを調べてました。ネットから持ってきたデータというか、ネットを介したデータではあります。(米国Googleが提供するデータサービスを契約しており、そのサービスURLから適宜抽出条件を入れてデータを抽出しております)
皆さんに頂いた数式が別シートに自分で手打ちしたものには有効で、コピペしたものには#VALUE!値が返ってきてしまうので・・・#2さんがおっしゃるとおり、Clean関数を使ったところ全て問題なくなりました。
No.5
- 回答日時:
=VALUE(LEFT(A1,17))で日時が出そうなので
日時分離は
=DATEVALUE(LEFT(A1,17))
=TIMEVALUE(LEFT(A1,17))
でいけませんか?
ありがとうございます。02:31PMを別セルに抜き出して、数字とPMの間に半角の空白を入れてTIMEVALUEをかけたところ希望通りの14:31表記となりました!
ただ、10-Apr-2017に関してはうんともすんとも・・・いろんな形式に加工したり、書式設定を変更してみたりしましたが#VALUE!の嵐です
No.4
- 回答日時:
No.1・3です。
何度もごめんなさい。
投稿後気づきました。
No.3はNo.2さんの回答とダブっていました。
どうも失礼しました。m(_ _)m
皆様ありがとうございました。締め切り押すと補足追加が出来なくなるのをしらず、こちらで失礼します。
急かされていたということもあり、目に見えないゴミ的なものがネットからのデータにはありえることを失念しており、CLEAN関数からの皆様の数式で解決いたしました。色々な形式で日付を見たいと指示を受けていますので、皆様の数式全て活用させていただきます。
#2さんをベストアンサーにさせては頂きましたが、ご回答いただきました皆様全てベストアンサーです。本当に助かりました。ありがとうございました。
No.2
- 回答日時:
こんばんは。
=TEXT(MID(A1,1,FIND(" ",A1)-1)*1+MID(A1,FIND(" ",A1)+1,5)+(RIGHT(A1,2)="PM")*12/24,"yyyy/mm/dd HH:MM")
シリアル値だけでしたら、
=MID(A1,1,FIND(" ",A1)-1)*1+MID(A1,FIND(" ",A1)+1,5)+(RIGHT(A1,2)="PM")*12/24
一応、VBAと比較してみたけれども、VBAとやっていることは差がありませんでした。
区切り位置ツールなら、もっと簡単なはずですが……。
ありがとうございます。かなり近づきました!!が、該当のデータを使うと#VALUE!になってしまいますね・・・なにか米国サイトのデータに特殊な変換とかがあるのでしょうかね
No.1
- 回答日時:
こんばんは!
何段階かに分けた方が判りやすいかもしれませんが、
無理やり一気にやってみました。
前提条件として「日付」と「時刻」の間は半角スペースがあるとします。
表示したいセルに
=IF(A1="","",DATE(MID(A1,FIND("#",SUBSTITUTE(A1,"-","#",2))+1,4),MATCH(MID(A1,FIND("-",A1)+1,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"},0),LEFT(A1,FIND("-",A1)-1))+MID(A1,FIND(" ",A1)+1,2)/24+(RIGHT(A1,2)="PM")*0.5+MID(A1,FIND(":",A1)+1,2)/24/60)
こんな感じではどうでしょうか?
※ 個人的には長い数式はメンテナンスの面からみても好きではありません。
他の列を利用し、「年」「月」「日」「時刻」など分割して考えた方が
間違いが少ないと思います。m(_ _)m
ありがとうございます。そうなんです、長い数式あまり入れたくないですよね・・・データが米国のサイトからダウンロードしたもので互換性とか何か違うのでしょうかね・・・頂いた式ですと#VALUE!になってしまいます。(質問の補足にも記入してみました)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Excel(エクセル) Excelのテーブルについて 6 2023/07/07 08:37
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- 数学 3次元実ベクトル空間において, 平面 P:x-y+z+1=0 と直線 L:2(x-1)=-y=-z 3 2022/10/29 14:39
- Excel(エクセル) エクセル 別シートの各セルそれぞれの比率を計算したい 4 2023/08/05 15:20
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
入力後に日付順になるように自...
-
日付だけを変更して印刷(Excel)
-
エクセル関数で日付かどうかの...
-
エクセルでENTERを押すと数式が...
-
日付入力→指定のセルの色を塗り...
-
Excelで、年だけの「西暦」から...
-
エクセルで数字列の間に『/』を...
-
Excelで半年後の日付を計算したい
-
ファイルのオープン時に今日の...
-
EXCELで直近の日付を抽出する関数
-
Excelに入力した個々の日付の数...
-
エクセルのセルにカレンダーを...
-
エクセルの条件付き書式につい...
-
ワード差込について
-
☆Excelエクセルで入力した日の...
-
エクセル 平日のみ連絡印刷
-
エクセル 当番表の作り方 エク...
-
日付を入力したセルをファイル...
-
Excelで日付を4ケタで入力し、○...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
31:30:00が1900/1/1 7:30:0
-
日付だけを変更して印刷(Excel)
-
入力後に日付順になるように自...
-
Excelで半年後の日付を計算したい
-
エクセルでENTERを押すと数式が...
-
エクセルで数字列の間に『/』を...
-
エクセルのセルにカレンダーを...
-
エクセル 当番表の作り方 エク...
-
エクセル関数で日付かどうかの...
-
Excelで、年だけの「西暦」から...
-
ファイルのオープン時に今日の...
-
Excelで8/26等の日付を全てその...
-
日付入力→指定のセルの色を塗り...
-
エクセルで日付入力欄を作成し...
-
☆Excelエクセルで入力した日の...
-
EXCELで直近の日付を抽出する関数
-
日付を入力したセルをファイル...
-
◆ EXCEL自動入力日付を自動で...
-
ワード差込について
-
WORDで翌日や翌々日の日付を表...
おすすめ情報
1,2のご回答については、お礼回答欄に記載しましたとおり#VALUE!で帰ってきてしまいます。
ひとまず、「10-Apr-2017 02:31PM」をまず分解して①「10-Apr-2017」②「02:31PM」の2つのセルに分けました。②については、02:31とPMの間に半角空白を入れてTIMEVALUE関数をかけたところ「14:31」と表記され書式も時刻で認識となりました。
①については、このまま、2017/04/10、10/Apr/2017、2017/Apr/10など思い当たる限り変更してDATEVALUE関数をかけても#VALUE!となってしまいます・・・
取り急ぎMid,Left関数、置換を使って見せるようには2017/04/10(書式:標準テキスト)としましたが今後のために何とか日付認識にさせたいなぁと思ってるところです・・・