INT式を使用してブール値TRUEおよびFALSEを1および0に変換しています。しかし、与えられたデータの一部をスプレッドシートにコピーしましたが、Excelがテキストをブール値として認識しない場合があります。
TRUEおよびFALSEのテキストは左揃えで表示され、「一般」としてフォーマットされます。 INT式はこれをブール値として認識しません。ただし、TRUEまたはFALSEのセルをクリックしてEnterキーを押すとすぐに、テキストが中央揃えになり、数式でブール値として認識されて整数に変換されます。
すべてのセルをクリックしてEnterキーを押すことなくExcelでこれを認識させる方法はありますか?
Excelは、テキスト「TRUE」または「FALSE」を同等のブール値として認識しません...それらを変換する必要がある場合、IFステートメントがタスクを実行します。
=IF(OR(A24,A24="TRUE"),TRUE,FALSE)
古い質問-次の方法は後世のために便利かもしれません。
Excelはブール値をテキストとして認識しています。列全体の形式をGeneral
に変更できますが、Excelは各セルをクリックしてEnterキーを押すまで、形式を再評価しません。別の方法は、text-to-columns関数を使用することです。非常に広い固定幅を使用します。結果は同じ単一の列になりますが、Excelは形式を再評価し、true
およびfalse
エントリをすべてブール値に更新する必要があります。
http://dailydoseofexcel.com/archives/2009/10/12/converting-cells-formatted-as-text/
とにかく論理値を数値に変換するのに、テキストも受け入れるように式を調整する代わりにデータを変更したいのはなぜですか:=INT(IF(ISLOGICAL(A1),A1,A1="TRUE"))
ブール値を実際よりも難しくする傾向があります。これは、私の考えでは、基本的なExcelで問題を処理する最良の方法です(他のすべての値で問題がなければ、「TRUE」はfalseを返します)。
=UPPER(TRIM(A1))="TRUE"
VBAの場合:
Public Function ConvertToBoolean(InputString As String) As Variant
Dim TempText As String
TempText = UCase(Trim(InputString))
If TempText = "TRUE" Or TempText = "FALSE" Then
ConvertToBoolean = TempText = "TRUE"
Else
ConvertToBoolean = InputString
End If
End Function
空白、大文字/小文字、その他の値を扱います。
スペースが埋め込まれたデータを貼り付けた可能性があります。
「true」と「false」は自動的にTRUEに変換され、FALSEは「true」と「false」がテキストのように扱われます。
TRIM関数を使用すると、ターゲットセルのブール値がTEXTとして評価されます。 A2 = TRUE(ブール)B2:= IF(TRIM(A2)= "TRUE"、 "Y"、 "N")は、 "Y"となる関数内で "TRUE"と評価します。
これらの解決策はどれもうまく機能しなかったため(非常に長い式でテキストが生成されたため)、イライラして自分の解決策を書きました。
Public Function ConvertToBoolean(InputString As String) As Variant
Dim TempResults As Variant
If InputString = "True" Then
TempResults = True
ElseIf InputString = "False" Then
TempResults = False
Else
TempResults = InputString
End If
ConvertToBoolean = TempResults
End Function
これは1と0を処理することには影響しませんが、文字列をラップして、True、False、または元の文字列に戻すことができます。
TRUE/FALSEの列に対して=TYPE(Value)
は何を示していますか?
私はLibreOfficeを使用しており、「本当の」Excelではありませんが、テキストフィールドでさえ正しく認識します...
TRUE
を=TRUE
で検索/置換できますか?