Excel 2016/O365 で文字列数式を計算するより良い方法はありますか?

Excel 2016/O365 で文字列数式を計算するより良い方法はありますか?

目標: 「2 日 16 時間 30 分」を秒単位で評価します。

ウェブで検索しましたが、適切な答えが見つからず、100% の数式ソリューションを希望しています。制限: VBA なし、名前マネージャーは使用不可、日/時間/分のみ、スペースあり。

現在機能している解決策: ここに画像の説明を入力してください

答え1

このSUMを配列数式として使用します。

=SUM(
  (ISNUMBER(SEARCH("Day",TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*999,999)))))*(IFERROR(60*60*24*TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*999+1,999)),0))
+ (ISNUMBER(SEARCH("Hour",TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*999,999)))))*(IFERROR(60*60*TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*999+1,999)),0))
+ (ISNUMBER(SEARCH("Minute",TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1)))*999,999)))))*(IFERROR(60*TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*999+1,999)),0))
)

配列数式であるため、編集モードを終了するときは Enter ではなく Ctrl + Shift + Enter で確定する必要があります。

これは文字列内の各単語を反復します。 、 、または が見つかった場合は、Day(s)そのHour(s)単語Minute(s) の前の数字を使用して適切な乗算を行います。 次に、結果を加算します。

ここに画像の説明を入力してください

関連情報