私が目指しているのはこれです:
=IF(LEFT(Q3,2)="By","認定ラボを参照"&"-"&SUM(Q3-L3))
私が言いたいのは、Q3 に「By」と記載されている場合は「承認ラボを参照」を返し、記載されていない場合は Q3 から L3 を減算し (両方のセルは日付)、経過した日数を返すということです。
答え1
Q3
セルの形式は のようですBy [date]
。Excel はこれを日付値ではなくテキスト値として認識します。したがって、 のようなことはできませんQ3-L3
。これが混乱の原因だと思います。データの設定方法に応じて、この問題を解決するいくつかのオプションがあります。それらに入る前に、数式を整理しましょう。考えるあなたはしたいどちらか「承認ラボを参照」というテキストを表示するまたは完成までに何日かかると予想されるかを示します。その場合、計算式は次のようになります。
=IF(LEFT(Q3,2)="By", "See authorizing lab", Q3-L3)
さて、部分ではQ3-L3
、テキスト値から日付値を抽出する必要があります。そのための関数があります。最初の 3 文字 ( By
) をスキップしたいので、関数も使用しますMID
。
DATEVALUE(MID(Q3,4,LEN(Q3)))
これにより、4 番目の文字から始まるすべてのテキストが抽出され、日付値に変換されます。これを数式の残りの部分に代入すると、次のようになります。
=IF(LEFT(Q3,2)="By", "See authorizing lab", DATEVALUE(MID(Q3,4,LEN(Q3)))-L3)
答え2
確かにこれは可能です。同じ関数にテキストと数式を含めることができない理由はありませんIF
。
あなたの例は関数の形式に従っていませんIF
。
=IF(logical_test, value_if_true, value_if_false)
つまり、各部分をコンマで区切る必要があります。したがって、コードは次のようになります。
=IF(LEFT(Q3,2)="By", "see authorizing lab", Q3-L3)
SUM
(また、数値の範囲を追加する場合を除いて、この関数を使用する必要はありません。)