質問: 9:00 am — 12:30 pmなどのテキストの文字列に基づいて期間を計算するexcelの数式 次の形式の時間範囲の文字列の実際の期間を計算するexcel式を開発しようとしています。1:00am – 3:00am この記事 によると、2回引くのと同じくらい簡単なはずです。たとえば、2回(4:55:00)の間の時間、分、秒を取得するには、次のように記述します。=text(b2-a2,"h:mm:ss") これが私がどこまで到達したかについてです:=text(right(b2,search(" – ",b2))-left(b2,search(" – ",b2)),"h:mm:ss") 問題は、テキストの文字列に時間に加えて「日付」コンポーネントがないことである可能性があるのではないかと思います。減算操作を実行して日付を文字列に「ファッジ」できるようにする唯一の解決策はありますか?または、単に時間と分のコンポーネントを個別に分解し、その方法で期間を計算する以外に、別の代替アプローチがありますか?また、可能であれば、午後9時から午前12時など、午後から午前までの潜在的な時間帯を補正したいと思います。
回答: この式を試してください:=a2+(a1>a2)-a1 どこa1「開始」時刻が含まれています a2「to」時間が含まれています次に、text関数を使用して文字列にフォーマットします。 または数値形式を使用する[h]:mm:ss。深夜を過ぎた時間帯(つまり、午後9時34分から午前3時45分まで)でも機能するはずです。まず、ランスが述べたように、時間と時間文字列のam/pm表記の間にスペースを追加する必要があります。これを行う最も簡単な方法は、excelの検索と置換機能を使用することです。押す ctrl + h、検索対象に「am」と入力し、置換に「am」(前にスペースを1つ入れて)と入力します。 「午後」も同じようにします。編集:[ネストされたsubstitutesを削除]ネストsubstitutesは結局のところ悪い考えです。少なくともtrimを追加せずに。これが私の他のやり過ぎのアプローチです。以下の式を使用して名前( "tt")を作成します($ a1:$ a10は、時間文字列を含む範囲です。=trim(substitute(substitute($a1:$a10,"a"," a"),"p"," p")) 次に、この式を使用して、期間を取得します(上記の最初の式に基づく)。=right(tt,len(tt)-find("-",tt,1)-1)+ (left(tt,find("-",tt,1)-2)>right(tt,len(tt)-find("-",tt,1)-1))- left(tt,find("-",tt,1)-2)