• ベストアンサー

Excel2010 データの並び替え

「3:58:28PM」「10:20:26AM」というように入力されているデータを時間順で並び替えたいのですが、方法が分かりません。一度、他のフォーマット「hh:mm:ss」などに変換する方法でもかまいません。よろしくお願いいたします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 まず、その時刻のデータが入力されているセル範囲をまとめて選択した上で、Excelの置換機能を利用されて、「AM」や「PM」を、それぞれ「 AM」や「 PM」の様に、、「AM」や「PM」の前に半角スペースを追加した文字列に置換する事で、文字列データとなっていたものを、本当の時刻データに変換されては如何でしょうか?  念のために、如何にそのための操作方法を掲載しておきます。 データ形式が文字列データとなってしまっている時刻データが入力されているセル範囲をまとめて選択   ↓ [ホーム]タブをクリック   ↓ 現れた「編集」グループの中にある[検索と選択]ボタンをクリック   ↓ 現れた選択肢の中にある[置換]をクリック   ↓ 現れた「検索と置換」ダイアログボックスの[置換]タブをクリック   ↓ 「検索する文字列」欄に「AM」(鉤括弧は不要)と入力   ↓ 「置換後の文字列」欄に「 AM」(鉤括弧は不要)という具合に、「AM」の前に半角スペースを追加した文字列を入力   ↓ 「検索と置換」ダイアログボックスの[すべて置換]ボタンをクリック   ↓ 「検索する文字列」欄に「PM」(鉤括弧は不要)と入力   ↓ 「置換後の文字列」欄に「 PM」(鉤括弧は不要)という具合に、「PM」の前に半角スペースを追加した文字列を入力   ↓ 「検索と置換」ダイアログボックスの[すべて置換]ボタンをクリック   ↓ 「検索と置換」ダイアログボックスの[閉じる]ボタンをクリック

qwerty-h
質問者

お礼

ありがとうございます!一番シンプルですね。なんで気づかなかったんだろう。。。私以外がデータを扱うこともあるので、数式を使わないやり方が非常に助かりました!

その他の回答 (3)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

例示の時刻の表示形式は、AMやPMの前にスペースが無いため、文字列として認識されています。 並べ替えを実行できるようにシリアル値に変換するなら以下のような式が簡単です。 =REPLACE(A1,LEN(A1)-1,0," ")*1 最後にセルの書式を、ご希望の表示形式にしてください。

qwerty-h
質問者

お礼

なるほど!空白をAM/PMの前に挿入して、Excelが時刻データとして認識できるようにするわけですね。ありがとうございます。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>「3:58:28PM」「10:20:26AM」というように入力されているデータを時間順で並び替えたいのですが 「時間」と「時刻」は異なります。 提示の情報は「時刻」と判断します。 Excelで時刻のデータをキー入力すると自動的に表示形式が変更され表示と異なるシリアル値がセルに収納されます。 3:58:28 PMと入力すると数式バーには15:58:28と表示されます。 セルの書式で表示を標準に変更すると0.665601851851852のように小数で表示されるはずです。 ソートで扱われる値は小数で表示されたシリアル値であることを念頭にソートの条件を指定すれば良いだけです。 ソートの対象は選択された範囲で行われることをご存知と思いますが念のため申し添えます。 尚、時間とは時刻と時刻の間ですから大きい方の時刻から小さい方の時刻を引いた差で求められます。 値の扱いは時刻と同じ形態のシリアル値です。

qwerty-h
質問者

お礼

ありがとうございます。レポーティングツールで出力した結果が文字列で入力されていたので、時刻データとして変換する必要がありました。中のクエリを自分で書き換えられれば良いのですが。。。。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 元データはA列の1行目からあるとします。 データ内には必ず「AM」または「PM」が最後に入っているという前提です。 B1セルに =IF(ISNUMBER(FIND("A",A1)),LEFT(A1,FIND("A",A1)-1)*1,0.5+LEFT(A1,FIND("P",A1)-1)*1) という数式を入れフィルハンドルでダブルクリック! B列の昇順で並び替えてみてください。 ※ B列以降を使っている場合はB列を挿入して数式を入れてください。 並び替えが終わるとB列を削除して完了です。m(_ _)m

qwerty-h
質問者

お礼

ありがとうございます。参考になります。

関連するQ&A

  • 時間のフォーマット

    数値を時間(HH:MM:SSやAM/PM HH:MM:SS)にフォーマットしたいのですが、どのようにコーディングすればよいのでしょうか? SimpleDateFormatクラスを使用して試みているのですが、 どうしてもできません・・・ 例)131214 → PM 1:12:14

    • ベストアンサー
    • Java
  • 131071秒を関数で日付と時間にするには?

    数値(秒)をエクセルで時間に換算しています。 24時間を超えた時、「○日HH:MM:SS」 のようにエクセルで表記できますか? 32767は、9:06:07 65535は、18:12:15 ここまでは書式設定を時間([$-F400]h:mm:ss AM/PM)にするだけで済みます 更に数値行を追加し、 131071 262143 524287 1048575 ... 9007199254740990 となったとき、どうしたら良いでしょうか? お分かりの方、どうぞよろしくお願いいたします。 ○日HH:MM:SS、 ○年○日HH:MM:SS のように関数をコピペして計算表示していきたいです。 Windows8pro Office2013のエクセルです。よろしくお願いいたします。

  • 数値から時間へ変換 分:秒形式

    2.485分と表示されるデータをhh:mm:ss形式に変換したくあれこれと考えております。ネットで検索すると「8.5時間を8:30に変換」というようにhh:mm形式での説明は多く見られるのですが、mm:ss形式ではヒントがよくわからずにおります。どういった数式で求められるのでしょうか?よろしくお願いします。

  • javaのCalendar型を日付型に変換したい

    Calendar型の変数をフォーマット付き("yyyy/MM/dd hh:ss")に変換したいのですが上手い方法が見つかりませんでした。 初心者でも無いのですが、変換の方法があったらご教示願います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 時刻セルどうしの値の連結について

    例えば、A1とB1にそれぞれhh:mm:ss形式で値が入っています。 それを連結して、A1 & "⇒" & B1 という形でC1セルに入力したいのですが、 これをこのまま実行してしまうと、値が数値に変換されてしまって うまくいきません。 C1に「hh:mm:ss⇒hh:mm:ss」のような形にしたいです。 なにか方法はないでしょうか? よろしくお願いします。

  • 秒数変換

    秒数を入力してそれが何日、何時間、何分、何秒に変換するプログラムを作りたいのですが Sub 秒数変換() Dim tt As Long, dd As Long, hh As Long, mm As Long, ss As Long tt = ("秒数を入力してください") mm = tt \ 60: ss = tt Mod 60 hh = mm \ 60: mm = mm Mod 60 dd = hh \ 24: hh = hh Mod 24 MsgBox tt & "秒は" & dd & "日" & hh & "時間" & mm & "分" & ss & "秒です" End Sub 自分で考えてこう作成したのですが、実行すると型があっていませんと表示がでます。なぜでしょう?

  • 時間単位の変換for Excel

    2:59:00(hh:mm:ss)を2:59(mm:ss)に変換する関数や方法をご教授頂いてもよろしいでしょうか? 2分59秒と入力していたつもりが2時間59秒00秒になっていました、、、 書式の変更や、値に変換などしてますがプロセスが導けていません。。。 何卒よろしくお願いします。

  • 日付のフォーマット変換について

    はじめまして。 日付フォーマット変換について質問です。 「Tue Sep 16 04:06:38 JST 2003」 上記のようなStringの値を yyyy/mm/dd hh:mm:ssのように 変換したいのですが、どのような方法を とれば良いのかわからず困っております。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • 時間の計算の方法

    2つのStr(time1、time2)に「yyyy/mm/dd hh:mm:ss」の形で データが入っていて、time2 - time1をtime3に「hh:mm:ss」に フォーマットして入れたいのですが、 VBの場合、  new1 = CDate(time1)  new2 = CDate(time2)  new3 = new2 - new1  time3 = Format(new3, "hh:mm:ss") で可能だと思いますが、ASPの場合はどのようにすればいいのですか? Formatを認識しないらしく、文字化けしてしまうので、 どなたか教えてください。よろしくお願いします。 まだASP歴、3日目なもので。。。。

  • 他のプロジェクトの処理を待つ方法を教えて頂きたいのですが

    VB2008の初心者です。 以下のコ-ドのような、あるプロジェクトから複数のプロジェクトを 順次呼び出して処理をしたいと思っています。 '日付の入力 Dim proc As New Process() ListBox1.Items.Add(Format(Now, "HH.mm.ss") & "  *** ル-プチェック開始") proc.StartInfo.FileName = "G:\・・・・・・・・・・" 'Aプロジェクト proc.Start() ListBox1.Items.Add(Format(Now, "HH.mm.ss") & "  *** ル-プチェック終了") ListBox1.Items.Add(Format(Now, "HH.mm.ss") & "  *** ロ-レベルコ-ド付与開始") proc.StartInfo.FileName = "G:\・・・・・・・・・・" 'Bプロジェクト proc.Start() ListBox1.Items.Add(Format(Now, "HH.mm.ss") & "  *** ロ-レベルコ-ド付与終了") Aプロジェクトを呼び出して開始時間を表示するのですが、呼び出すと すぐに終了時間を表示してしまいます。 呼び出されるプロジェクトは、DBの更新だけでFormからの入力は無いと言う処理内容です。 Aプロジェクトが終了するまで、終了時間の表示を待つ方法を教えて頂きたいと思い、投稿しました。 よろしくお願いします。

専門家に質問してみよう