1 つのセル内の複数の値から最大値を返すにはどうすればよいでしょうか?

1 つのセル内の複数の値から最大値を返すにはどうすればよいでしょうか?

スプレッドシートには、セミコロンで区切られた複数の日付を持つセルがいくつかあります;

グーグルで調べたところ、TEXTSPLITおそらくこれを分割するのに最適な数式が見つかりましたが、複数のデータ列が生成されます。分割される前にセル内の値を比較し、グループ内で最大の値を 1 つ返したいと考えています。

これは可能ですか? 思いついたのは、別のシートに値を分割する少し複雑なマシンと、それらの行から最大値を取得する別の数式を用意することです。できれば、複数のシートの使用は避けたいです。

次に例を示します。 TextSplit 式の例

答え1

私が正しく理解していれば、次の式が機能するはずです。

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


  • セルで使用される数式B1

=MAX(--TEXTSPLIT(A1,"; "))

または、BYROW()塗りつぶさずにすべての出力を一度に取得するために使用します。

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


=BYROW(A1:A3,LAMBDA(α, MAX(--TEXTSPLIT(α,"; "))))

既存のサンプル データでも上記の式は機能します。以下にサンプルのデモンストレーションを示します。

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


説明:

  • 関数の使用TEXTSPLIT(): 区切り文字によって文字列を列に分割するのに役立ちますsemi-colon with a space--> ;(.gif表示される内容を参照してください)。

これは関数ライブラリに属する​​関数なので文章したがって、これを使用すると日付の文字列がテキストとして分割され、将来のデータ操作に問題が生じることがわかります。注記: Excel では日付と時刻は数値として保存されるため、整数部分は日付を表し、小数部分は日付の時刻を表します。

したがって、OP でユーザーが述べたように、を または で加算するか を乗算するか で割ることでDATEVALUE()、実際の日付に変換でき、最終的に変換されます。double unary011


  • 上記が完了したら、MAX()関数内でラップして戻り値を返すことができます。最新/最高/最大/最高(どちらでも適切な)日付。

理由:

ユーザーが、0私が提供した数式を使用しているときに を取得していたのに、 を取得していた理由DATEVALUE()を説明するために、スクリーンショットでそれを明確にします。

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


  • ユーザーはセミコロンのみの区切り文字を使用していました;が、私はセミコロンとスペースを使用しました;
  • そのため、二重単項演算子で囲むと、MAX()最初の単項演算子のみが数値に変換され、2 番目の単項演算子は先頭にスペースがあるためエラーが返されます。ただし、区切り文字としてセミコロンとスペースを使用した場合は機能するはずです。スクリーンショットを参照してください。

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


  • 関数を使用するとDATEVALUE()、先頭のスペースが処理され、数値に変換され、最後に で折り返されてMAX()目的の出力が得られます。別の方法としては、 を使用することが最初に説明されましたが;、別の方法としては を使用することです。TRIM()

=MAX(--TRIM(TEXTSPLIT(A3,";")))

答え2

試したことがない@MayukhBhattacharya が提供した回答しかし、提供された情報には感謝しているので、そのユーザーに回答を提供しました。

回答を DateValue に変更する必要があると判断したため、MAX 数式と TEXTSPLIT 数式の間に DATEVALUE 数式を挿入しました。

私が使用した式は次のとおりです。

=MAX(DATEVALUE(TEXTSLIT(A2, ";")))

以下の例を参照してください。

DATEVALUE を数式に挿入する

必ず短い日付フィールドを使用してセルをフォーマットしてください。

関連情報