早いものから遅いものまでの時間に基づいて並べ替えたいデータの列があります。
データの形式は次のように表示されます。
0d 22h 41分、
0d 2h 3min
等。
これを行うための最良の方法は何ですか?0、22、41の数字を抽出し、計算を使用して分に変換すると、並べ替えることができますか?
最善の方法をアドバイスし、可能であれば公式も教えてください。
日、時間、分が常に存在すると仮定して、A2のデータを使用して、B2でこの式を試して、時間値に変換します。
=SUM(MID(0&A2,FIND({"d","h","m"},0&A2)-2,2)/{1,24,1440})
合計時間と分を表示するカスタムフォーマットB2 [h]:mm
......その後、Bを「キー」として使用して両方の列を並べ替えることができます
これにより、99日もの値に対応できます。日数が多い場合は、このバージョンを試してください。
=LEFT(A2,FIND("d",A2)-1)+SUM(MID(A2,FIND({"h","m"},A2)-2,2)/{24,1440})
これは複数の方法で実行できますが、いくつかの単純な文字列操作と連結を数式で使用できます。
仮定
A1 = 0d 22h 41min
A2 = 0d 2h 3min
まず、MID()関数を使用してhhとmmを抽出する必要があります
これを行うには、FIND()関数を使用して、「d」、「h」、および「m」が出現する場所を検索し、それらの間の数値を抽出します。
最後に、「:」を使用して22:41を連結します。
A1の場合(別の列、つまりB1に入力):
=MID(A1, FIND( "d", A1) + 2, SUM( FIND( {"d","h"}, A1) * {-1,1}) - 2 )&":"&IF(LEN(MID(A1, FIND( "h", A1) + 2, SUM( FIND( {"h","m"}, A1) * {-1,1}) - 2))=2,MID(A1, FIND( "h", A1) + 2, SUM( FIND( {"h","m"}, A1) * {-1,1}) - 2 ),"0"&MID(A1, FIND( "h", A1) + 2, SUM( FIND( {"h","m"}, A1) * {-1,1}) - 2 ))
結果は次のようになります
A1 = 0d 22h 41min
A2 = 0d 2h 3min
B1 = 22:41
B2 = 2:03
「3min」が発生した場合、LEN()関数を使用して、分の値が1文字か2文字かを確認することに注意してください。2文字(41文字)の場合はそのままにしておきます。1文字(つまり3)の場合は、その前に0を付けて03を取得します。
お役に立てば幸いです。
列A、セルA1、A2などにデータがあるとすると、次の数式を使用して日、時間、分を抽出し、すべてを合計できます。
まず、セルB1に日数を抽出します。
= LEFT(A1、FIND( "d"、A1)-1)
さて、C1に何時間もかかります。
= MID(A1、FIND( "d"、A1)+2、FIND( "h"、A1)-FIND( "d"、A1)-2)
そしてD1の数分:
= MID(A1、FIND( "h"、A1)+ 1、FIND( "min"、A1)-FIND( "h"、A1)-1)
日の合計をE1に入れます:
= B1 * 24 * 60 + C1 * 24 + D1
次に、列Eで並べ替えます。
もう1つの可能性は、正規表現を使用してデータを検索して置換することです。
探す:
([0-9] {1,2})d([0-9] {1,2})h([0-9] {1,2})min
交換:
= \ 1 * 24 * 60 + \ 2 * 24 + \ 3
このページでは、日付操作の例での置換動作について説明します。