2017-06-15 5 views
0

を使用してセルに数式を解析「文字長に長すぎることになり、定義された名前として使用してみました。 『:』を使用します=evaluate("T1")すなわち、式を評価; T1は、上記の式のテキストバージョンを持っていたは、式を配置しようとするとVBA

Create Date Create Time 
03/05/17 07:28 AM 
09/05/17 07:32 AM 
13/05/17 07:20 AM 
16/05/17 04:57 PM 
17/05/17 10:17 AM 

スプレッドシートは、列Bの時間としてフォーマット列Aと日時に日付が含まれています、私はパーどうかを働いています。線は、Fri 5pmMon 8:30amの時間の間です。

Range("C4").Formula = "=IF(OR(WEEKDAY(A4,2)>5,AND(WEEKDAY(A4,2)=5,B4>17/24),AND(WEEKDAY(A4,2)=1,B4<8.5/24)),""Flag"","""") 

上記の式は、と仮定します。あなただけの短い式をしたい場合は

+0

不適切な二重引用符(つまり、 '' ''の代わりに '' '' '' '')ではなく、式にも 'TEXT(TIME17,0,0) :mm:ss ")'と 'TIME(" 8,30,0 ")'にあります。使用している実際の式は何ですか? – YowE3K

答えて

0

、あなたは(例えば)のようにコーディングすることができVBAで

=IF(OR(WEEKDAY(A4,2)>5,AND(WEEKDAY(A4,2)=5,B4>17/24),AND(WEEKDAY(A4,2)=1,B4<8.5/24)),"Flag","") 

を、使用することができますB列には時間が含まれていますが、日付がの場合は、

(例えば)のようにコーディングすることができVBAで
=IF(OR(WEEKDAY(B4,2)>5,AND(WEEKDAY(B4,2)=5,MOD(B4,1)>17/24),AND(WEEKDAY(B4,2)=1,MOD(B4,1)<8.5/24)),"Flag","") 

、:

Range("C4").Formula = "=IF(OR(WEEKDAY(B4,2)>5,AND(WEEKDAY(B4,2)=5,MOD(B4,1)>17/24),AND(WEEKDAY(B4,2)=1,MOD(B4,1)<8.5/24)),""Flag"","""") 

私はあなたがすることを意図だと思うものに、あなたのオリジナルの式の修正は、あなた(のためのVBAコードを与えるだろうインスタンス):

Range("C4").Formula = "=IF(TEXT(A4,""ddd"")=""Fri"",IF(TEXT(B4-INT(B4),""hh:mm:ss"")>=TEXT(TIME(17,0,0),""hh:mm:ss""),""flag"","" ""),IF(TEXT(A4,""ddd"")=""Sat"",""flag"",IF(TEXT(A4,""ddd"")=""Sun"",""flag"",IF(TEXT(A4,""ddd"")=""Mon"",IF(TEXT(B4-INT(B4),""hh:mm:ss"")<=TEXT(TIME(8,30,0),""hh:mm:ss""),""Flag"","""")))))" 

例えば、容易に簡略化することができ、その内のいくつかのものがありますが、

  • TEXT(TIME(17,0,0),""hh:mm:ss"")がより簡単に(それが固定の結果を持っているとしている一定の時間です)"17:00:00"のように書くことができ、かつ
  • TEXT(B4-INT(B4),""hh:mm:ss"")TEXT(B4, ""hh:mm:ss"")に簡素化することができた(時刻文字列は、あなたがそれを計算しても同じになるだろう特定の日に、または1900年1月1日にそれを計算するかどうか)。
  • +0

    Yep - テキストのエラーで拾った(time17,0 ..... – CamBotting

    +0

    礼儀正しく働く曜日とmodを使って訂正された数式に感謝します。 – CamBotting

    関連する問題