web-dev-qa-db-ja.com

数式で数値ではなくテキストとして値を処理する

列からデータを読み取るExcel式があります。その列のデータは、「10-11」などの日付のような形式になる場合があります。列がテキスト形式であることを確認しましたが、すべての値は日付として再解釈されず、プレーンテキストとして正しく表示されますが、リファレンスでは、式は基本的にそれらを日付として再解釈しています。

数式のセル参照にセルをテキストとして解釈させる方法が必要です。 TEXT(A1、 "@")を試しましたが、機能しません-日付の数値が表示されます。

10
lcdservices

Brian Camireの answer がその理由を説明していますが、これがあなたに役立つワークシート関数です。最長の文字列の長さに基づいて、その中に数値配列を作成する必要があることに注意してください。これは配列数式なので、最初に入力するときはCTRL-SHIFT-ENTERを押す必要があります。それをクリックして列の下にドラッグできます。

=LEFT(A1, MATCH(FALSE, ISNUMBER(VALUE(MID(A1, {1,2,3,4,5}, 1))),0) - 1)
5
Lance Roberts

セルに値を挿入し、自動フォーマットせずにテキストとして扱うには、次のように入力します。

=("cell data")

例えば:

=("+1 3456789")
5
Andrew

短い答え:数式で数値のような(または日付のような)テキスト値を参照する場合、Excelが数値を期待している数式の場所でそれらを使用しないでください。

長い答え:ソース列がテキストとしてフォーマットされている場合でもandソース列の値は本当にテキストとして入力され(日付を含む数値ではありません)、Excelは自動的にテキスト値を数値(日付)式でそれらを参照する場合if Excelが数値(または日付)を予期している場所でそれらを使用します。

たとえば(米国の日付形式を想定)、空白のワークシートでは次のようになります。

  1. 列Aのフォーマットをテキストに設定します。

  2. セルA1に値10-11を入力します。

  3. セルB1に数式= T(A1)を入力します。 T()ワークシート関数は、テキストの場合、指定された値を返します。それ以外の場合、空の文字列を返します。セルB1の数式の結果は10-11である必要があり、値のA1はテキストであり、数値や日付ではありません(この場合、結果は空の文字列になります)。

  4. セルC1に数式= A1を入力します。

  5. セルD1に数式= T(C1)を入力します。結果は10-11にもなり、C1の数式の値が数値や日付ではなくテキストであることを示します。これは、数式で数値(または日付)のように見えるテキスト値を(ときどき)使用して、Excelでそれをテキストとして処理することができることを示しています(これは必要な処理です)。

  6. セルE1に数式= A1 + 0を入力します。結果は40827になります。これは、2011年10月11日の日付の数値です。これは、数式で数値(または日付)のように見えるテキスト値を(ときどき)使用でき、Excelが自動的にそれをExcelが数値を期待している場所(+演算子の両側など)で使用する場合、数値(観測したもの).

5
Brian Camire

&""を使用すると、Excel 数式の結果をテキストに変換*1は数値に変換されるように)。

したがって、次の式を使用できます。

=TEXT(A1;"jj-mm")&""
4
JMax

セル内のテキストの前に単一引用符を置くと、すべての参照でテキストとして表す必要があります。

'10-11
1
Chris Gregg

入力にゼロを追加するだけです!

テキストプレフィックスの付いた数値のリスト(FOO-1、FOO-25、FOO-979など)があるという同様の問題がありましたが、数値の部分(1、25、979)が欲しいので、別の番号を実行できますそれから公式。テキスト部分を空白に置き換えるためにSUBSTITUTEを使用していましたが、これらの数値を使用する他の数式では、偽の結果が出ていました。私はこのように私の数式を作ることになりました:

= SUBSTITUTE(B1:B10、 "FOO-"、 "")+ 0となり、ISNUMBERはTRUEを示し、以前はFALSEを示していました。

0
StalePhish

私の場合、ディーラーが広告パーツに使用するフォームワークシートを用意して、最終的なコストを計算させています。ロックされた「製品」シートを参照します。問題は、私が彼らが入力したものを制御する方法がなかったことです。

Products can be like:
101 = A true number
7-2009 = Reads as date
7-5601-RT = TEXT/NUMBER reads as both number or text (NOT SOLVED YET)
CP6072CD = reads as plain text

私はこれのほとんどを理解しました。唯一でないのは、text/Numberとして読み取られるものだけです。

誰かが同様の解決策を探している場合、私は次のことを行いました:「NUMBER」、「DATE」、「TEXT」の3つの異なるケースをテストして表示するために3つの追加の列を作成しました。

DATE:         =NOT(ISERROR(DATEVALUE(B42)))
ISOTHER:      =(ISNUMBER(--(MID(B42,ROW(INDIRECT("1:"&LEN(B42))),1))))
NUMBER:       =ISNUMBER(B42)
NUMBER/TEXT:  =NOT SOLVED YET

I42 = DATE
J42 = NUMBER
K42 = OTHER
L42 = TEXT
M42 = THE RESULT OF THE QUERY BELOW

=IF(AND(I42 = FALSE, J42 = FALSE, K42 = TRUE), "NUMBER", IF(AND( I42 = TRUE, J42= FALSE, K42=TRUE), "DATE", "TEXT"))

これ(上)はすべての真/偽の結果をテストし、値がどうなるかによって、それぞれを次のようにフォーマットします。

ISNUMBER = VALUE(B42)
DATE FORMATTED AS B42*1
ELSE TEXT - AS ORIGINAL

=IF(M42 = "NUMBER", VALUE(B42), IF(M42 = "DATE", B42*1, B42))

7-5601-RTは数値と同じようにテストするので、テキストと数値の両方であるかどうかをテストする方法を理解する必要があります。「FALSE、FALSE、TRUE、TRUE」

0
Lee Fairbanks