列からデータを読み取るExcelの数式があります。その列のデータは、「10-11」などの日付のような形式である場合があります。列がテキスト形式であり、すべての値が日付として再解釈されるのではなく、プレーンテキストとして正しく表示されることを確認したにもかかわらず、数式は基本的に参照内の日付として再解釈されます。
数式のセル参照にセルをテキストとして解釈させる方法が必要です。TEXT(A1、 "@")を試しましたが、機能しません。日付の数値が表示されます。
列からデータを読み取るExcelの数式があります。その列のデータは、「10-11」などの日付のような形式である場合があります。列がテキスト形式であり、すべての値が日付として再解釈されるのではなく、プレーンテキストとして正しく表示されることを確認したにもかかわらず、数式は基本的に参照内の日付として再解釈されます。
数式のセル参照にセルをテキストとして解釈させる方法が必要です。TEXT(A1、 "@")を試しましたが、機能しません。日付の数値が表示されます。
簡単な回答: 数式で数値のような (または日付のような) テキスト値を参照する場合、Excel が数値を想定している数式内の場所でそれらを使用しないでください。
長い回答: ソース列がテキストとして書式設定されていて、ソース列の値が実際にテキスト (日付を含む数値ではなく) として入力されている場合でも、 Excel でテキスト値を参照すると、テキスト値が数値 (日付を含む) に自動的に変換される場合があります。Excel が数値 (または日付) を想定している場所で数式を使用する場合は、数式を使用します。
たとえば (米国の日付形式を想定)、空白のワークシートでは次のようになります。
列 A の書式をテキストに設定します。
セル A1 に値 10-11 を入力します。
セル B1 に数式 =T(A1) を入力します。T() ワークシート関数は、テキストの場合、指定された値を返します。それ以外の場合は、空の文字列を返します。セル B1 の数式の結果は 10-11 になるはずです。これは、A1 の値が数値や日付ではなくテキストであることを示しています (この場合、結果は空の文字列になります)。
セル C1 に数式 =A1 を入力します。
セル D1 に数式 =T(C1) を入力します。結果も 10-11 になるはずです。これは、C1 の式の値が数値や日付ではなく、テキストであることを示しています。これは、(場合によっては) 数値 (または日付) のように見えるテキスト値を数式で使用し、Excel でそれをテキストとして扱うことができることを示しています (これが目的です)。
セル E1 に数式 =A1+0 を入力します。結果は 40827 になります。これは、2011 年 10 月 11 日の日付の数値です。これは、数式で数値 (または日付) のように見えるテキスト値を (場合によっては) 使用できることを示しており、Excel は自動的にそれを次のように変換します。 Excelが数値を期待している場所(+演算子の両側など)で使用する場合は、数値(これはあなたが観察したものです)。
Brian Camire's answerはその理由を説明していますが、これはあなたのために働くワークシート関数です. 最長の文字列の長さに基づいて、その数値配列を作成する必要があることに注意してください。これは配列数式なので、最初に入力するときに CTRL-SHIFT-ENTER を押す必要があります。その後、クリックして列の下にドラッグできます。
=LEFT(A1, MATCH(FALSE, ISNUMBER(VALUE(MID(A1, {1,2,3,4,5}, 1))),0) - 1)
を使用する&""
と、Excelは数式の結果をテキストに変換します(*1
数値に変換する場合と同様)。
したがって、次の式を使用できます。
=TEXT(A1;"jj-mm")&""
セル内のテキストの前に一重引用符を付けると、すべての参照でテキストとして表されます。
'10-11
入力にゼロを追加するだけです!
テキストプレフィックス(FOO-1、FOO-25、FOO-979など)を含む数字のリストがある同様の問題を抱えていましたが、数字の部分(1、25、979)が必要だったので、別のものを実行できましたそれから式。SUBSTITUTE を使用してテキスト部分を空白に置き換えていましたが、これらの数値を使用する他の数式では、偽の結果が得られました。私は最終的に次のような式を作りました:
=SUBSTITUTE(B1:B10,"FOO-","")+0 であり、以前は FALSE であった ISNUMBER が TRUE になっています。